package scerbak.parser.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.xtext.conversion.ValueConverterException;
import scerbak.services.UsecasesGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalUsecasesParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_ID", "RULE_UPID", "RULE_EMPTY", "RULE_CHAR", "RULE_UPCHAR", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "':'", "'Use Case'", "'Goal:'", "'Scope:'", "'Level:'", "'Primary actor:'", "'Secondary actors:'", "'Stakeholders:'", "'Interests:'", "'Preconditions:'", "'Success guarantees:'", "'Minimal guarantees:'", "'Trigger:'", "'Main success scenario:'", "'Extensions:'", "'Technology and data variants:'", "'Open issues:'", "'-'", "'.'", "','", "'*'", "'Use case ends with'", "'Use case continues with step'", "'?'", "'('", "')'", "'/'", "'import'", "'.*'", "'business'", "'system'", "'subsystem'", "'black-box'", "'white-box'", "'summary'", "'user-goal'", "'subfunction'", "'success'", "'failure'"
    };
    public static final int RULE_EMPTY=7;
    public static final int RULE_ID=5;
    public static final int RULE_STRING=10;
    public static final int RULE_UPCHAR=9;
    public static final int RULE_ANY_OTHER=14;
    public static final int RULE_UPID=6;
    public static final int RULE_INT=4;
    public static final int RULE_CHAR=8;
    public static final int RULE_WS=13;
    public static final int RULE_SL_COMMENT=12;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=11;

        public InternalUsecasesParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g"; }



     	private UsecasesGrammarAccess grammarAccess;
     	
        public InternalUsecasesParser(TokenStream input, IAstFactory factory, UsecasesGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("scerbak/parser/antlr/internal/InternalUsecases.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected UsecasesGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start entryRuleModel
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:78:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:79:2: (iv_ruleModel= ruleModel EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:80:2: iv_ruleModel= ruleModel EOF
            {
             currentNode = createCompositeNode(grammarAccess.getModelRule(), currentNode); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();
            _fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleModel


    // $ANTLR start ruleModel
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:87:1: ruleModel returns [EObject current=null] : ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0_0 = null;

        EObject lv_package_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:92:6: ( ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:93:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:93:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:93:2: ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:93:2: ( (lv_imports_0_0= ruleImport ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==43) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:94:1: (lv_imports_0_0= ruleImport )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:94:1: (lv_imports_0_0= ruleImport )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:95:3: lv_imports_0_0= ruleImport
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getImportsImportParserRuleCall_0_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleModel131);
            	    lv_imports_0_0=ruleImport();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"imports",
            	    	        		lv_imports_0_0, 
            	    	        		"Import", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:117:3: ( (lv_package_1_0= rulePackage ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:118:1: (lv_package_1_0= rulePackage )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:118:1: (lv_package_1_0= rulePackage )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:119:3: lv_package_1_0= rulePackage
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getPackagePackageParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePackage_in_ruleModel153);
            lv_package_1_0=rulePackage();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"package",
            	        		lv_package_1_0, 
            	        		"Package", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleModel


    // $ANTLR start entryRulePackage
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:149:1: entryRulePackage returns [EObject current=null] : iv_rulePackage= rulePackage EOF ;
    public final EObject entryRulePackage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackage = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:150:2: (iv_rulePackage= rulePackage EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:151:2: iv_rulePackage= rulePackage EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPackageRule(), currentNode); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage189);
            iv_rulePackage=rulePackage();
            _fsp--;

             current =iv_rulePackage; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePackage


    // $ANTLR start rulePackage
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:158:1: rulePackage returns [EObject current=null] : ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_usecases_3_0= ruleUseCase ) )+ ) ;
    public final EObject rulePackage() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_usecases_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:163:6: ( ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_usecases_3_0= ruleUseCase ) )+ ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:164:1: ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_usecases_3_0= ruleUseCase ) )+ )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:164:1: ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_usecases_3_0= ruleUseCase ) )+ )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:164:3: 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_usecases_3_0= ruleUseCase ) )+
            {
            match(input,15,FOLLOW_15_in_rulePackage234); 

                    createLeafNode(grammarAccess.getPackageAccess().getPackageKeyword_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:168:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:169:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:169:1: (lv_name_1_0= ruleQualifiedName )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:170:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getPackageAccess().getNameQualifiedNameParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackage255);
            lv_name_1_0=ruleQualifiedName();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPackageRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_1_0, 
            	        		"QualifiedName", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,16,FOLLOW_16_in_rulePackage265); 

                    createLeafNode(grammarAccess.getPackageAccess().getColonKeyword_2(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:196:1: ( (lv_usecases_3_0= ruleUseCase ) )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==17) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:197:1: (lv_usecases_3_0= ruleUseCase )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:197:1: (lv_usecases_3_0= ruleUseCase )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:198:3: lv_usecases_3_0= ruleUseCase
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getPackageAccess().getUsecasesUseCaseParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleUseCase_in_rulePackage286);
            	    lv_usecases_3_0=ruleUseCase();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getPackageRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"usecases",
            	    	        		lv_usecases_3_0, 
            	    	        		"UseCase", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePackage


    // $ANTLR start entryRuleUseCase
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:228:1: entryRuleUseCase returns [EObject current=null] : iv_ruleUseCase= ruleUseCase EOF ;
    public final EObject entryRuleUseCase() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUseCase = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:229:2: (iv_ruleUseCase= ruleUseCase EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:230:2: iv_ruleUseCase= ruleUseCase EOF
            {
             currentNode = createCompositeNode(grammarAccess.getUseCaseRule(), currentNode); 
            pushFollow(FOLLOW_ruleUseCase_in_entryRuleUseCase323);
            iv_ruleUseCase=ruleUseCase();
            _fsp--;

             current =iv_ruleUseCase; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUseCase333); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleUseCase


    // $ANTLR start ruleUseCase
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:237:1: ruleUseCase returns [EObject current=null] : ( 'Use Case' ( (lv_name_1_0= ruleNAME ) ) ( 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) ) ) 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ ( 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? ( 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? ( 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? ) ;
    public final EObject ruleUseCase() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;

        AntlrDatatypeRuleToken lv_description_3_0 = null;

        EObject lv_scope_6_0 = null;

        Enumerator lv_level_8_0 = null;

        EObject lv_primaryActor_10_0 = null;

        EObject lv_secondaryActors_12_0 = null;

        EObject lv_tertiaryActors_14_0 = null;

        EObject lv_interests_16_0 = null;

        EObject lv_preconditions_19_0 = null;

        EObject lv_postconditions_21_0 = null;

        EObject lv_invariants_23_0 = null;

        EObject lv_trigger_25_0 = null;

        EObject lv_steps_27_0 = null;

        EObject lv_extensions_29_0 = null;

        EObject lv_variants_31_0 = null;

        EObject lv_issues_33_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:242:6: ( ( 'Use Case' ( (lv_name_1_0= ruleNAME ) ) ( 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) ) ) 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ ( 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? ( 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? ( 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:243:1: ( 'Use Case' ( (lv_name_1_0= ruleNAME ) ) ( 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) ) ) 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ ( 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? ( 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? ( 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:243:1: ( 'Use Case' ( (lv_name_1_0= ruleNAME ) ) ( 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) ) ) 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ ( 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? ( 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? ( 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )? )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:243:3: 'Use Case' ( (lv_name_1_0= ruleNAME ) ) ( 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )? ( ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) ) ) ( ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) ) ) 'Main success scenario:' ( (lv_steps_27_0= ruleActionStep ) )+ ( 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )? ( 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )? ( 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )?
            {
            match(input,17,FOLLOW_17_in_ruleUseCase368); 

                    createLeafNode(grammarAccess.getUseCaseAccess().getUseCaseKeyword_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:247:1: ( (lv_name_1_0= ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:248:1: (lv_name_1_0= ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:248:1: (lv_name_1_0= ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:249:3: lv_name_1_0= ruleNAME
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getNameNAMEParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleUseCase389);
            lv_name_1_0=ruleNAME();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_1_0, 
            	        		"NAME", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:271:2: ( 'Goal:' ( (lv_description_3_0= rulePlainText ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==18) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:271:4: 'Goal:' ( (lv_description_3_0= rulePlainText ) )
                    {
                    match(input,18,FOLLOW_18_in_ruleUseCase400); 

                            createLeafNode(grammarAccess.getUseCaseAccess().getGoalKeyword_2_0(), null); 
                        
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:275:1: ( (lv_description_3_0= rulePlainText ) )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:276:1: (lv_description_3_0= rulePlainText )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:276:1: (lv_description_3_0= rulePlainText )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:277:3: lv_description_3_0= rulePlainText
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getDescriptionPlainTextParserRuleCall_2_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_rulePlainText_in_ruleUseCase421);
                    lv_description_3_0=rulePlainText();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"description",
                    	        		lv_description_3_0, 
                    	        		"PlainText", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:299:4: ( ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:301:1: ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:301:1: ( ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:302:2: ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?)
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:305:2: ( ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?)
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:306:3: ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+ {...}?
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:306:3: ( ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) ) | ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) ) | ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) ) | ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) ) | ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) ) )+
            int cnt7=0;
            loop7:
            do {
                int alt7=7;
                int LA7_0 = input.LA(1);

                if ( LA7_0 ==19 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0) ) {
                    alt7=1;
                }
                else if ( LA7_0 ==20 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1) ) {
                    alt7=2;
                }
                else if ( LA7_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2) ) {
                    alt7=3;
                }
                else if ( LA7_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3) ) {
                    alt7=4;
                }
                else if ( LA7_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4) ) {
                    alt7=5;
                }
                else if ( LA7_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5) ) {
                    alt7=6;
                }


                switch (alt7) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:308:4: ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:308:4: ({...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:309:5: {...}? => ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:309:104: ( ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:310:6: ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 0);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:313:6: ( 'Scope:' ( (lv_scope_6_0= ruleScope ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:313:8: 'Scope:' ( (lv_scope_6_0= ruleScope ) )
            	    {
            	    match(input,19,FOLLOW_19_in_ruleUseCase476); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getScopeKeyword_3_0_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:317:1: ( (lv_scope_6_0= ruleScope ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:318:1: (lv_scope_6_0= ruleScope )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:318:1: (lv_scope_6_0= ruleScope )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:319:3: lv_scope_6_0= ruleScope
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getScopeScopeParserRuleCall_3_0_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleScope_in_ruleUseCase497);
            	    lv_scope_6_0=ruleScope();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		set(
            	    	       			current, 
            	    	       			"scope",
            	    	        		lv_scope_6_0, 
            	    	        		"Scope", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:348:4: ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:348:4: ({...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:349:5: {...}? => ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:349:104: ( ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:350:6: ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 1);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:353:6: ( 'Level:' ( (lv_level_8_0= ruleLevel ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:353:8: 'Level:' ( (lv_level_8_0= ruleLevel ) )
            	    {
            	    match(input,20,FOLLOW_20_in_ruleUseCase559); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getLevelKeyword_3_1_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:357:1: ( (lv_level_8_0= ruleLevel ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:358:1: (lv_level_8_0= ruleLevel )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:358:1: (lv_level_8_0= ruleLevel )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:359:3: lv_level_8_0= ruleLevel
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getLevelLevelEnumRuleCall_3_1_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleLevel_in_ruleUseCase580);
            	    lv_level_8_0=ruleLevel();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		set(
            	    	       			current, 
            	    	       			"level",
            	    	        		lv_level_8_0, 
            	    	        		"Level", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:388:4: ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:388:4: ({...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:389:5: {...}? => ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:389:104: ( ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:390:6: ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 2);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:393:6: ( 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:393:8: 'Primary actor:' ( (lv_primaryActor_10_0= ruleActor ) )
            	    {
            	    match(input,21,FOLLOW_21_in_ruleUseCase642); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getPrimaryActorKeyword_3_2_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:397:1: ( (lv_primaryActor_10_0= ruleActor ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:398:1: (lv_primaryActor_10_0= ruleActor )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:398:1: (lv_primaryActor_10_0= ruleActor )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:399:3: lv_primaryActor_10_0= ruleActor
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getPrimaryActorActorParserRuleCall_3_2_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleActor_in_ruleUseCase663);
            	    lv_primaryActor_10_0=ruleActor();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		set(
            	    	       			current, 
            	    	       			"primaryActor",
            	    	        		lv_primaryActor_10_0, 
            	    	        		"Actor", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:428:4: ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:428:4: ({...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:429:5: {...}? => ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:429:104: ( ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:430:6: ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 3);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:433:6: ( 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+ )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:433:8: 'Secondary actors:' ( (lv_secondaryActors_12_0= ruleActor ) )+
            	    {
            	    match(input,22,FOLLOW_22_in_ruleUseCase725); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getSecondaryActorsKeyword_3_3_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:437:1: ( (lv_secondaryActors_12_0= ruleActor ) )+
            	    int cnt4=0;
            	    loop4:
            	    do {
            	        int alt4=2;
            	        int LA4_0 = input.LA(1);

            	        if ( (LA4_0==RULE_UPID) ) {
            	            alt4=1;
            	        }


            	        switch (alt4) {
            	    	case 1 :
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:438:1: (lv_secondaryActors_12_0= ruleActor )
            	    	    {
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:438:1: (lv_secondaryActors_12_0= ruleActor )
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:439:3: lv_secondaryActors_12_0= ruleActor
            	    	    {
            	    	     
            	    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getSecondaryActorsActorParserRuleCall_3_3_1_0(), currentNode); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleActor_in_ruleUseCase746);
            	    	    lv_secondaryActors_12_0=ruleActor();
            	    	    _fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	    	        }
            	    	    	        try {
            	    	    	       		add(
            	    	    	       			current, 
            	    	    	       			"secondaryActors",
            	    	    	        		lv_secondaryActors_12_0, 
            	    	    	        		"Actor", 
            	    	    	        		currentNode);
            	    	    	        } catch (ValueConverterException vce) {
            	    	    				handleValueConverterException(vce);
            	    	    	        }
            	    	    	        currentNode = currentNode.getParent();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt4 >= 1 ) break loop4;
            	                EarlyExitException eee =
            	                    new EarlyExitException(4, input);
            	                throw eee;
            	        }
            	        cnt4++;
            	    } while (true);


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 5 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:468:4: ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:468:4: ({...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:469:5: {...}? => ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:469:104: ( ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:470:6: ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 4);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:473:6: ( 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+ )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:473:8: 'Stakeholders:' ( (lv_tertiaryActors_14_0= ruleActor ) )+
            	    {
            	    match(input,23,FOLLOW_23_in_ruleUseCase809); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getStakeholdersKeyword_3_4_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:477:1: ( (lv_tertiaryActors_14_0= ruleActor ) )+
            	    int cnt5=0;
            	    loop5:
            	    do {
            	        int alt5=2;
            	        int LA5_0 = input.LA(1);

            	        if ( (LA5_0==RULE_UPID) ) {
            	            alt5=1;
            	        }


            	        switch (alt5) {
            	    	case 1 :
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:478:1: (lv_tertiaryActors_14_0= ruleActor )
            	    	    {
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:478:1: (lv_tertiaryActors_14_0= ruleActor )
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:479:3: lv_tertiaryActors_14_0= ruleActor
            	    	    {
            	    	     
            	    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getTertiaryActorsActorParserRuleCall_3_4_1_0(), currentNode); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleActor_in_ruleUseCase830);
            	    	    lv_tertiaryActors_14_0=ruleActor();
            	    	    _fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	    	        }
            	    	    	        try {
            	    	    	       		add(
            	    	    	       			current, 
            	    	    	       			"tertiaryActors",
            	    	    	        		lv_tertiaryActors_14_0, 
            	    	    	        		"Actor", 
            	    	    	        		currentNode);
            	    	    	        } catch (ValueConverterException vce) {
            	    	    				handleValueConverterException(vce);
            	    	    	        }
            	    	    	        currentNode = currentNode.getParent();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt5 >= 1 ) break loop5;
            	                EarlyExitException eee =
            	                    new EarlyExitException(5, input);
            	                throw eee;
            	        }
            	        cnt5++;
            	    } while (true);


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 6 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:508:4: ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:508:4: ({...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:509:5: {...}? => ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:509:104: ( ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:510:6: ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_3(), 5);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:513:6: ( 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+ )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:513:8: 'Interests:' ( (lv_interests_16_0= ruleInterest ) )+
            	    {
            	    match(input,24,FOLLOW_24_in_ruleUseCase893); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getInterestsKeyword_3_5_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:517:1: ( (lv_interests_16_0= ruleInterest ) )+
            	    int cnt6=0;
            	    loop6:
            	    do {
            	        int alt6=2;
            	        int LA6_0 = input.LA(1);

            	        if ( (LA6_0==RULE_UPID) ) {
            	            alt6=1;
            	        }


            	        switch (alt6) {
            	    	case 1 :
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:518:1: (lv_interests_16_0= ruleInterest )
            	    	    {
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:518:1: (lv_interests_16_0= ruleInterest )
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:519:3: lv_interests_16_0= ruleInterest
            	    	    {
            	    	     
            	    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getInterestsInterestParserRuleCall_3_5_1_0(), currentNode); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleInterest_in_ruleUseCase914);
            	    	    lv_interests_16_0=ruleInterest();
            	    	    _fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	    	        }
            	    	    	        try {
            	    	    	       		add(
            	    	    	       			current, 
            	    	    	       			"interests",
            	    	    	        		lv_interests_16_0, 
            	    	    	        		"Interest", 
            	    	    	        		currentNode);
            	    	    	        } catch (ValueConverterException vce) {
            	    	    				handleValueConverterException(vce);
            	    	    	        }
            	    	    	        currentNode = currentNode.getParent();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt6 >= 1 ) break loop6;
            	                EarlyExitException eee =
            	                    new EarlyExitException(6, input);
            	                throw eee;
            	        }
            	        cnt6++;
            	    } while (true);


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt7 >= 1 ) break loop7;
                        EarlyExitException eee =
                            new EarlyExitException(7, input);
                        throw eee;
                }
                cnt7++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getUseCaseAccess().getUnorderedGroup_3()) ) {
                throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canLeave(grammarAccess.getUseCaseAccess().getUnorderedGroup_3())");
            }

            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getUseCaseAccess().getUnorderedGroup_3());
            	

            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:556:2: ( ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:558:1: ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:558:1: ( ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:559:2: ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* )
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:562:2: ( ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )* )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:563:3: ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )*
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:563:3: ( ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) ) | ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) ) )*
            loop11:
            do {
                int alt11=5;
                int LA11_0 = input.LA(1);

                if ( LA11_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0) ) {
                    alt11=1;
                }
                else if ( LA11_0 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1) ) {
                    alt11=2;
                }
                else if ( LA11_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2) ) {
                    alt11=3;
                }
                else if ( LA11_0 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3) ) {
                    alt11=4;
                }


                switch (alt11) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:565:4: ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:565:4: ({...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:566:5: {...}? => ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:566:104: ( ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:567:6: ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 0);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:570:6: ( 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+ )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:570:8: 'Preconditions:' ( (lv_preconditions_19_0= ruleCondition ) )+
            	    {
            	    match(input,25,FOLLOW_25_in_ruleUseCase1014); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getPreconditionsKeyword_4_0_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:574:1: ( (lv_preconditions_19_0= ruleCondition ) )+
            	    int cnt8=0;
            	    loop8:
            	    do {
            	        int alt8=2;
            	        int LA8_0 = input.LA(1);

            	        if ( (LA8_0==RULE_UPID) ) {
            	            alt8=1;
            	        }


            	        switch (alt8) {
            	    	case 1 :
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:575:1: (lv_preconditions_19_0= ruleCondition )
            	    	    {
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:575:1: (lv_preconditions_19_0= ruleCondition )
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:576:3: lv_preconditions_19_0= ruleCondition
            	    	    {
            	    	     
            	    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getPreconditionsConditionParserRuleCall_4_0_1_0(), currentNode); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleCondition_in_ruleUseCase1035);
            	    	    lv_preconditions_19_0=ruleCondition();
            	    	    _fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	    	        }
            	    	    	        try {
            	    	    	       		add(
            	    	    	       			current, 
            	    	    	       			"preconditions",
            	    	    	        		lv_preconditions_19_0, 
            	    	    	        		"Condition", 
            	    	    	        		currentNode);
            	    	    	        } catch (ValueConverterException vce) {
            	    	    				handleValueConverterException(vce);
            	    	    	        }
            	    	    	        currentNode = currentNode.getParent();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt8 >= 1 ) break loop8;
            	                EarlyExitException eee =
            	                    new EarlyExitException(8, input);
            	                throw eee;
            	        }
            	        cnt8++;
            	    } while (true);


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:605:4: ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:605:4: ({...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:606:5: {...}? => ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:606:104: ( ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:607:6: ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 1);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:610:6: ( 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+ )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:610:8: 'Success guarantees:' ( (lv_postconditions_21_0= ruleCondition ) )+
            	    {
            	    match(input,26,FOLLOW_26_in_ruleUseCase1098); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getSuccessGuaranteesKeyword_4_1_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:614:1: ( (lv_postconditions_21_0= ruleCondition ) )+
            	    int cnt9=0;
            	    loop9:
            	    do {
            	        int alt9=2;
            	        int LA9_0 = input.LA(1);

            	        if ( (LA9_0==RULE_UPID) ) {
            	            alt9=1;
            	        }


            	        switch (alt9) {
            	    	case 1 :
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:615:1: (lv_postconditions_21_0= ruleCondition )
            	    	    {
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:615:1: (lv_postconditions_21_0= ruleCondition )
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:616:3: lv_postconditions_21_0= ruleCondition
            	    	    {
            	    	     
            	    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getPostconditionsConditionParserRuleCall_4_1_1_0(), currentNode); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleCondition_in_ruleUseCase1119);
            	    	    lv_postconditions_21_0=ruleCondition();
            	    	    _fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	    	        }
            	    	    	        try {
            	    	    	       		add(
            	    	    	       			current, 
            	    	    	       			"postconditions",
            	    	    	        		lv_postconditions_21_0, 
            	    	    	        		"Condition", 
            	    	    	        		currentNode);
            	    	    	        } catch (ValueConverterException vce) {
            	    	    				handleValueConverterException(vce);
            	    	    	        }
            	    	    	        currentNode = currentNode.getParent();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt9 >= 1 ) break loop9;
            	                EarlyExitException eee =
            	                    new EarlyExitException(9, input);
            	                throw eee;
            	        }
            	        cnt9++;
            	    } while (true);


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:645:4: ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:645:4: ({...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:646:5: {...}? => ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:646:104: ( ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:647:6: ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 2);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:650:6: ( 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+ )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:650:8: 'Minimal guarantees:' ( (lv_invariants_23_0= ruleCondition ) )+
            	    {
            	    match(input,27,FOLLOW_27_in_ruleUseCase1182); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getMinimalGuaranteesKeyword_4_2_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:654:1: ( (lv_invariants_23_0= ruleCondition ) )+
            	    int cnt10=0;
            	    loop10:
            	    do {
            	        int alt10=2;
            	        int LA10_0 = input.LA(1);

            	        if ( (LA10_0==RULE_UPID) ) {
            	            alt10=1;
            	        }


            	        switch (alt10) {
            	    	case 1 :
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:655:1: (lv_invariants_23_0= ruleCondition )
            	    	    {
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:655:1: (lv_invariants_23_0= ruleCondition )
            	    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:656:3: lv_invariants_23_0= ruleCondition
            	    	    {
            	    	     
            	    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getInvariantsConditionParserRuleCall_4_2_1_0(), currentNode); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleCondition_in_ruleUseCase1203);
            	    	    lv_invariants_23_0=ruleCondition();
            	    	    _fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	    	        }
            	    	    	        try {
            	    	    	       		add(
            	    	    	       			current, 
            	    	    	       			"invariants",
            	    	    	        		lv_invariants_23_0, 
            	    	    	        		"Condition", 
            	    	    	        		currentNode);
            	    	    	        } catch (ValueConverterException vce) {
            	    	    				handleValueConverterException(vce);
            	    	    	        }
            	    	    	        currentNode = currentNode.getParent();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt10 >= 1 ) break loop10;
            	                EarlyExitException eee =
            	                    new EarlyExitException(10, input);
            	                throw eee;
            	        }
            	        cnt10++;
            	    } while (true);


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:685:4: ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:685:4: ({...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:686:5: {...}? => ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3) ) {
            	        throw new FailedPredicateException(input, "ruleUseCase", "getUnorderedGroupHelper().canSelect(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3)");
            	    }
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:686:104: ( ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:687:6: ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getUseCaseAccess().getUnorderedGroup_4(), 3);
            	    	 				
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:690:6: ( 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:690:8: 'Trigger:' ( (lv_trigger_25_0= ruleTrigger ) )
            	    {
            	    match(input,28,FOLLOW_28_in_ruleUseCase1266); 

            	            createLeafNode(grammarAccess.getUseCaseAccess().getTriggerKeyword_4_3_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:694:1: ( (lv_trigger_25_0= ruleTrigger ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:695:1: (lv_trigger_25_0= ruleTrigger )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:695:1: (lv_trigger_25_0= ruleTrigger )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:696:3: lv_trigger_25_0= ruleTrigger
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getTriggerTriggerParserRuleCall_4_3_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleTrigger_in_ruleUseCase1287);
            	    lv_trigger_25_0=ruleTrigger();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		set(
            	    	       			current, 
            	    	       			"trigger",
            	    	        		lv_trigger_25_0, 
            	    	        		"Trigger", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);


            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getUseCaseAccess().getUnorderedGroup_4());
            	

            }

            match(input,29,FOLLOW_29_in_ruleUseCase1337); 

                    createLeafNode(grammarAccess.getUseCaseAccess().getMainSuccessScenarioKeyword_5(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:736:1: ( (lv_steps_27_0= ruleActionStep ) )+
            int cnt12=0;
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==RULE_INT) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:737:1: (lv_steps_27_0= ruleActionStep )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:737:1: (lv_steps_27_0= ruleActionStep )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:738:3: lv_steps_27_0= ruleActionStep
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getStepsActionStepParserRuleCall_6_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleActionStep_in_ruleUseCase1358);
            	    lv_steps_27_0=ruleActionStep();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"steps",
            	    	        		lv_steps_27_0, 
            	    	        		"ActionStep", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt12 >= 1 ) break loop12;
                        EarlyExitException eee =
                            new EarlyExitException(12, input);
                        throw eee;
                }
                cnt12++;
            } while (true);

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:760:3: ( 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+ )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==30) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:760:5: 'Extensions:' ( (lv_extensions_29_0= ruleExtension ) )+
                    {
                    match(input,30,FOLLOW_30_in_ruleUseCase1370); 

                            createLeafNode(grammarAccess.getUseCaseAccess().getExtensionsKeyword_7_0(), null); 
                        
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:764:1: ( (lv_extensions_29_0= ruleExtension ) )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==RULE_INT||LA13_0==36) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:765:1: (lv_extensions_29_0= ruleExtension )
                    	    {
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:765:1: (lv_extensions_29_0= ruleExtension )
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:766:3: lv_extensions_29_0= ruleExtension
                    	    {
                    	     
                    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getExtensionsExtensionParserRuleCall_7_1_0(), currentNode); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleExtension_in_ruleUseCase1391);
                    	    lv_extensions_29_0=ruleExtension();
                    	    _fsp--;


                    	    	        if (current==null) {
                    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
                    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	    	        }
                    	    	        try {
                    	    	       		add(
                    	    	       			current, 
                    	    	       			"extensions",
                    	    	        		lv_extensions_29_0, 
                    	    	        		"Extension", 
                    	    	        		currentNode);
                    	    	        } catch (ValueConverterException vce) {
                    	    				handleValueConverterException(vce);
                    	    	        }
                    	    	        currentNode = currentNode.getParent();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    }
                    break;

            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:788:5: ( 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+ )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==31) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:788:7: 'Technology and data variants:' ( (lv_variants_31_0= ruleVariant ) )+
                    {
                    match(input,31,FOLLOW_31_in_ruleUseCase1405); 

                            createLeafNode(grammarAccess.getUseCaseAccess().getTechnologyAndDataVariantsKeyword_8_0(), null); 
                        
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:792:1: ( (lv_variants_31_0= ruleVariant ) )+
                    int cnt15=0;
                    loop15:
                    do {
                        int alt15=2;
                        int LA15_0 = input.LA(1);

                        if ( (LA15_0==RULE_INT||LA15_0==36) ) {
                            alt15=1;
                        }


                        switch (alt15) {
                    	case 1 :
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:793:1: (lv_variants_31_0= ruleVariant )
                    	    {
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:793:1: (lv_variants_31_0= ruleVariant )
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:794:3: lv_variants_31_0= ruleVariant
                    	    {
                    	     
                    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getVariantsVariantParserRuleCall_8_1_0(), currentNode); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleVariant_in_ruleUseCase1426);
                    	    lv_variants_31_0=ruleVariant();
                    	    _fsp--;


                    	    	        if (current==null) {
                    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
                    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	    	        }
                    	    	        try {
                    	    	       		add(
                    	    	       			current, 
                    	    	       			"variants",
                    	    	        		lv_variants_31_0, 
                    	    	        		"Variant", 
                    	    	        		currentNode);
                    	    	        } catch (ValueConverterException vce) {
                    	    				handleValueConverterException(vce);
                    	    	        }
                    	    	        currentNode = currentNode.getParent();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt15 >= 1 ) break loop15;
                                EarlyExitException eee =
                                    new EarlyExitException(15, input);
                                throw eee;
                        }
                        cnt15++;
                    } while (true);


                    }
                    break;

            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:816:5: ( 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+ )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==32) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:816:7: 'Open issues:' ( (lv_issues_33_0= ruleIssue ) )+
                    {
                    match(input,32,FOLLOW_32_in_ruleUseCase1440); 

                            createLeafNode(grammarAccess.getUseCaseAccess().getOpenIssuesKeyword_9_0(), null); 
                        
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:820:1: ( (lv_issues_33_0= ruleIssue ) )+
                    int cnt17=0;
                    loop17:
                    do {
                        int alt17=2;
                        int LA17_0 = input.LA(1);

                        if ( (LA17_0==RULE_UPID) ) {
                            alt17=1;
                        }


                        switch (alt17) {
                    	case 1 :
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:821:1: (lv_issues_33_0= ruleIssue )
                    	    {
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:821:1: (lv_issues_33_0= ruleIssue )
                    	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:822:3: lv_issues_33_0= ruleIssue
                    	    {
                    	     
                    	    	        currentNode=createCompositeNode(grammarAccess.getUseCaseAccess().getIssuesIssueParserRuleCall_9_1_0(), currentNode); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleIssue_in_ruleUseCase1461);
                    	    lv_issues_33_0=ruleIssue();
                    	    _fsp--;


                    	    	        if (current==null) {
                    	    	            current = factory.create(grammarAccess.getUseCaseRule().getType().getClassifier());
                    	    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	    	        }
                    	    	        try {
                    	    	       		add(
                    	    	       			current, 
                    	    	       			"issues",
                    	    	        		lv_issues_33_0, 
                    	    	        		"Issue", 
                    	    	        		currentNode);
                    	    	        } catch (ValueConverterException vce) {
                    	    				handleValueConverterException(vce);
                    	    	        }
                    	    	        currentNode = currentNode.getParent();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt17 >= 1 ) break loop17;
                                EarlyExitException eee =
                                    new EarlyExitException(17, input);
                                throw eee;
                        }
                        cnt17++;
                    } while (true);


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleUseCase


    // $ANTLR start entryRuleScope
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:852:1: entryRuleScope returns [EObject current=null] : iv_ruleScope= ruleScope EOF ;
    public final EObject entryRuleScope() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScope = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:853:2: (iv_ruleScope= ruleScope EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:854:2: iv_ruleScope= ruleScope EOF
            {
             currentNode = createCompositeNode(grammarAccess.getScopeRule(), currentNode); 
            pushFollow(FOLLOW_ruleScope_in_entryRuleScope1500);
            iv_ruleScope=ruleScope();
            _fsp--;

             current =iv_ruleScope; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScope1510); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleScope


    // $ANTLR start ruleScope
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:861:1: ruleScope returns [EObject current=null] : ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) ) ;
    public final EObject ruleScope() throws RecognitionException {
        EObject current = null;

        Enumerator lv_visibility_0_0 = null;

        Enumerator lv_type_1_0 = null;

        EObject lv_internalActor_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:866:6: ( ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:867:1: ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:867:1: ( ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:867:2: ( (lv_visibility_0_0= ruleVisibility ) )? ( (lv_type_1_0= ruleScopeType ) )? ( (lv_internalActor_2_0= ruleActor ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:867:2: ( (lv_visibility_0_0= ruleVisibility ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( ((LA19_0>=48 && LA19_0<=49)) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:868:1: (lv_visibility_0_0= ruleVisibility )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:868:1: (lv_visibility_0_0= ruleVisibility )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:869:3: lv_visibility_0_0= ruleVisibility
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getScopeAccess().getVisibilityVisibilityEnumRuleCall_0_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleVisibility_in_ruleScope1556);
                    lv_visibility_0_0=ruleVisibility();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getScopeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"visibility",
                    	        		lv_visibility_0_0, 
                    	        		"Visibility", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }
                    break;

            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:891:3: ( (lv_type_1_0= ruleScopeType ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( ((LA20_0>=45 && LA20_0<=47)) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:892:1: (lv_type_1_0= ruleScopeType )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:892:1: (lv_type_1_0= ruleScopeType )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:893:3: lv_type_1_0= ruleScopeType
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getScopeAccess().getTypeScopeTypeEnumRuleCall_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleScopeType_in_ruleScope1578);
                    lv_type_1_0=ruleScopeType();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getScopeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"type",
                    	        		lv_type_1_0, 
                    	        		"ScopeType", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }
                    break;

            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:915:3: ( (lv_internalActor_2_0= ruleActor ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:916:1: (lv_internalActor_2_0= ruleActor )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:916:1: (lv_internalActor_2_0= ruleActor )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:917:3: lv_internalActor_2_0= ruleActor
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getScopeAccess().getInternalActorActorParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleActor_in_ruleScope1600);
            lv_internalActor_2_0=ruleActor();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getScopeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"internalActor",
            	        		lv_internalActor_2_0, 
            	        		"Actor", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleScope


    // $ANTLR start entryRuleActor
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:947:1: entryRuleActor returns [EObject current=null] : iv_ruleActor= ruleActor EOF ;
    public final EObject entryRuleActor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActor = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:948:2: (iv_ruleActor= ruleActor EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:949:2: iv_ruleActor= ruleActor EOF
            {
             currentNode = createCompositeNode(grammarAccess.getActorRule(), currentNode); 
            pushFollow(FOLLOW_ruleActor_in_entryRuleActor1636);
            iv_ruleActor=ruleActor();
            _fsp--;

             current =iv_ruleActor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActor1646); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleActor


    // $ANTLR start ruleActor
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:956:1: ruleActor returns [EObject current=null] : ( ( (lv_name_0_0= ruleNAME ) ) ( ':' ( (lv_description_2_0= rulePlainText ) ) )? ) ;
    public final EObject ruleActor() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;

        AntlrDatatypeRuleToken lv_description_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:961:6: ( ( ( (lv_name_0_0= ruleNAME ) ) ( ':' ( (lv_description_2_0= rulePlainText ) ) )? ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:962:1: ( ( (lv_name_0_0= ruleNAME ) ) ( ':' ( (lv_description_2_0= rulePlainText ) ) )? )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:962:1: ( ( (lv_name_0_0= ruleNAME ) ) ( ':' ( (lv_description_2_0= rulePlainText ) ) )? )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:962:2: ( (lv_name_0_0= ruleNAME ) ) ( ':' ( (lv_description_2_0= rulePlainText ) ) )?
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:962:2: ( (lv_name_0_0= ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:963:1: (lv_name_0_0= ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:963:1: (lv_name_0_0= ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:964:3: lv_name_0_0= ruleNAME
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getActorAccess().getNameNAMEParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleActor1692);
            lv_name_0_0=ruleNAME();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getActorRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_0_0, 
            	        		"NAME", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:986:2: ( ':' ( (lv_description_2_0= rulePlainText ) ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==16) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:986:4: ':' ( (lv_description_2_0= rulePlainText ) )
                    {
                    match(input,16,FOLLOW_16_in_ruleActor1703); 

                            createLeafNode(grammarAccess.getActorAccess().getColonKeyword_1_0(), null); 
                        
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:990:1: ( (lv_description_2_0= rulePlainText ) )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:991:1: (lv_description_2_0= rulePlainText )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:991:1: (lv_description_2_0= rulePlainText )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:992:3: lv_description_2_0= rulePlainText
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getActorAccess().getDescriptionPlainTextParserRuleCall_1_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_rulePlainText_in_ruleActor1724);
                    lv_description_2_0=rulePlainText();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getActorRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"description",
                    	        		lv_description_2_0, 
                    	        		"PlainText", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleActor


    // $ANTLR start entryRuleInterest
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1022:1: entryRuleInterest returns [EObject current=null] : iv_ruleInterest= ruleInterest EOF ;
    public final EObject entryRuleInterest() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInterest = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1023:2: (iv_ruleInterest= ruleInterest EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1024:2: iv_ruleInterest= ruleInterest EOF
            {
             currentNode = createCompositeNode(grammarAccess.getInterestRule(), currentNode); 
            pushFollow(FOLLOW_ruleInterest_in_entryRuleInterest1762);
            iv_ruleInterest=ruleInterest();
            _fsp--;

             current =iv_ruleInterest; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInterest1772); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleInterest


    // $ANTLR start ruleInterest
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1031:1: ruleInterest returns [EObject current=null] : ( ( ( ruleNAME ) ) ':' ( (lv_description_2_0= rulePlainText ) ) ) ;
    public final EObject ruleInterest() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_description_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1036:6: ( ( ( ( ruleNAME ) ) ':' ( (lv_description_2_0= rulePlainText ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1037:1: ( ( ( ruleNAME ) ) ':' ( (lv_description_2_0= rulePlainText ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1037:1: ( ( ( ruleNAME ) ) ':' ( (lv_description_2_0= rulePlainText ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1037:2: ( ( ruleNAME ) ) ':' ( (lv_description_2_0= rulePlainText ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1037:2: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1038:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1038:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1039:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getInterestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getInterestAccess().getStakeholderActorCrossReference_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleInterest1820);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,16,FOLLOW_16_in_ruleInterest1830); 

                    createLeafNode(grammarAccess.getInterestAccess().getColonKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1057:1: ( (lv_description_2_0= rulePlainText ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1058:1: (lv_description_2_0= rulePlainText )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1058:1: (lv_description_2_0= rulePlainText )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1059:3: lv_description_2_0= rulePlainText
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getInterestAccess().getDescriptionPlainTextParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleInterest1851);
            lv_description_2_0=rulePlainText();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getInterestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"description",
            	        		lv_description_2_0, 
            	        		"PlainText", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleInterest


    // $ANTLR start entryRuleState
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1089:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
    public final EObject entryRuleState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleState = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1090:2: (iv_ruleState= ruleState EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1091:2: iv_ruleState= ruleState EOF
            {
             currentNode = createCompositeNode(grammarAccess.getStateRule(), currentNode); 
            pushFollow(FOLLOW_ruleState_in_entryRuleState1887);
            iv_ruleState=ruleState();
            _fsp--;

             current =iv_ruleState; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleState1897); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleState


    // $ANTLR start ruleState
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1098:1: ruleState returns [EObject current=null] : ( (lv_name_0_0= rulePlainText ) ) ;
    public final EObject ruleState() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1103:6: ( ( (lv_name_0_0= rulePlainText ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1104:1: ( (lv_name_0_0= rulePlainText ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1104:1: ( (lv_name_0_0= rulePlainText ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1105:1: (lv_name_0_0= rulePlainText )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1105:1: (lv_name_0_0= rulePlainText )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1106:3: lv_name_0_0= rulePlainText
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getStateAccess().getNamePlainTextParserRuleCall_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleState1942);
            lv_name_0_0=rulePlainText();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getStateRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_0_0, 
            	        		"PlainText", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleState


    // $ANTLR start entryRuleCondition
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1136:1: entryRuleCondition returns [EObject current=null] : iv_ruleCondition= ruleCondition EOF ;
    public final EObject entryRuleCondition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCondition = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1137:2: (iv_ruleCondition= ruleCondition EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1138:2: iv_ruleCondition= ruleCondition EOF
            {
             currentNode = createCompositeNode(grammarAccess.getConditionRule(), currentNode); 
            pushFollow(FOLLOW_ruleCondition_in_entryRuleCondition1977);
            iv_ruleCondition=ruleCondition();
            _fsp--;

             current =iv_ruleCondition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCondition1987); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleCondition


    // $ANTLR start ruleCondition
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1145:1: ruleCondition returns [EObject current=null] : ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= ruleState ) ) ) ;
    public final EObject ruleCondition() throws RecognitionException {
        EObject current = null;

        EObject lv_description_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1150:6: ( ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= ruleState ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1151:1: ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= ruleState ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1151:1: ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= ruleState ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1151:2: ( ( ruleNAME ) ) '-' ( (lv_description_2_0= ruleState ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1151:2: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1152:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1152:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1153:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getConditionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getConditionAccess().getActorActorCrossReference_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleCondition2035);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,33,FOLLOW_33_in_ruleCondition2045); 

                    createLeafNode(grammarAccess.getConditionAccess().getHyphenMinusKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1171:1: ( (lv_description_2_0= ruleState ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1172:1: (lv_description_2_0= ruleState )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1172:1: (lv_description_2_0= ruleState )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1173:3: lv_description_2_0= ruleState
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getConditionAccess().getDescriptionStateParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleState_in_ruleCondition2066);
            lv_description_2_0=ruleState();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getConditionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"description",
            	        		lv_description_2_0, 
            	        		"State", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleCondition


    // $ANTLR start entryRuleTrigger
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1203:1: entryRuleTrigger returns [EObject current=null] : iv_ruleTrigger= ruleTrigger EOF ;
    public final EObject entryRuleTrigger() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTrigger = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1204:2: (iv_ruleTrigger= ruleTrigger EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1205:2: iv_ruleTrigger= ruleTrigger EOF
            {
             currentNode = createCompositeNode(grammarAccess.getTriggerRule(), currentNode); 
            pushFollow(FOLLOW_ruleTrigger_in_entryRuleTrigger2102);
            iv_ruleTrigger=ruleTrigger();
            _fsp--;

             current =iv_ruleTrigger; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTrigger2112); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTrigger


    // $ANTLR start ruleTrigger
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1212:1: ruleTrigger returns [EObject current=null] : ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) ) ;
    public final EObject ruleTrigger() throws RecognitionException {
        EObject current = null;

        EObject lv_action_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1217:6: ( ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1218:1: ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1218:1: ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1218:2: ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1218:2: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1219:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1219:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1220:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getActorActorCrossReference_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleTrigger2160);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,33,FOLLOW_33_in_ruleTrigger2170); 

                    createLeafNode(grammarAccess.getTriggerAccess().getHyphenMinusKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1238:1: ( (lv_action_2_0= ruleAction ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1239:1: (lv_action_2_0= ruleAction )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1239:1: (lv_action_2_0= ruleAction )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1240:3: lv_action_2_0= ruleAction
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getTriggerAccess().getActionActionParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleAction_in_ruleTrigger2191);
            lv_action_2_0=ruleAction();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getTriggerRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"action",
            	        		lv_action_2_0, 
            	        		"Action", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTrigger


    // $ANTLR start entryRuleActionStep
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1270:1: entryRuleActionStep returns [EObject current=null] : iv_ruleActionStep= ruleActionStep EOF ;
    public final EObject entryRuleActionStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActionStep = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1271:2: (iv_ruleActionStep= ruleActionStep EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1272:2: iv_ruleActionStep= ruleActionStep EOF
            {
             currentNode = createCompositeNode(grammarAccess.getActionStepRule(), currentNode); 
            pushFollow(FOLLOW_ruleActionStep_in_entryRuleActionStep2227);
            iv_ruleActionStep=ruleActionStep();
            _fsp--;

             current =iv_ruleActionStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActionStep2237); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleActionStep


    // $ANTLR start ruleActionStep
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1279:1: ruleActionStep returns [EObject current=null] : ( ( (lv_name_0_0= ruleORD ) ) '.' ( ( ruleNAME ) ) '-' ( (lv_action_4_0= ruleAction ) ) ) ;
    public final EObject ruleActionStep() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_action_4_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1284:6: ( ( ( (lv_name_0_0= ruleORD ) ) '.' ( ( ruleNAME ) ) '-' ( (lv_action_4_0= ruleAction ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1285:1: ( ( (lv_name_0_0= ruleORD ) ) '.' ( ( ruleNAME ) ) '-' ( (lv_action_4_0= ruleAction ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1285:1: ( ( (lv_name_0_0= ruleORD ) ) '.' ( ( ruleNAME ) ) '-' ( (lv_action_4_0= ruleAction ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1285:2: ( (lv_name_0_0= ruleORD ) ) '.' ( ( ruleNAME ) ) '-' ( (lv_action_4_0= ruleAction ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1285:2: ( (lv_name_0_0= ruleORD ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1286:1: (lv_name_0_0= ruleORD )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1286:1: (lv_name_0_0= ruleORD )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1287:3: lv_name_0_0= ruleORD
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getActionStepAccess().getNameORDParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleActionStep2283);
            lv_name_0_0=ruleORD();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getActionStepRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_0_0, 
            	        		"ORD", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,34,FOLLOW_34_in_ruleActionStep2293); 

                    createLeafNode(grammarAccess.getActionStepAccess().getFullStopKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1313:1: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1314:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1314:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1315:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getActionStepRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getActionStepAccess().getActorActorCrossReference_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleActionStep2316);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,33,FOLLOW_33_in_ruleActionStep2326); 

                    createLeafNode(grammarAccess.getActionStepAccess().getHyphenMinusKeyword_3(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1333:1: ( (lv_action_4_0= ruleAction ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1334:1: (lv_action_4_0= ruleAction )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1334:1: (lv_action_4_0= ruleAction )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1335:3: lv_action_4_0= ruleAction
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getActionStepAccess().getActionActionParserRuleCall_4_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleAction_in_ruleActionStep2347);
            lv_action_4_0=ruleAction();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getActionStepRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"action",
            	        		lv_action_4_0, 
            	        		"Action", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleActionStep


    // $ANTLR start entryRuleAction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1365:1: entryRuleAction returns [EObject current=null] : iv_ruleAction= ruleAction EOF ;
    public final EObject entryRuleAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAction = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1366:2: (iv_ruleAction= ruleAction EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1367:2: iv_ruleAction= ruleAction EOF
            {
             currentNode = createCompositeNode(grammarAccess.getActionRule(), currentNode); 
            pushFollow(FOLLOW_ruleAction_in_entryRuleAction2383);
            iv_ruleAction=ruleAction();
            _fsp--;

             current =iv_ruleAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAction2393); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAction


    // $ANTLR start ruleAction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1374:1: ruleAction returns [EObject current=null] : (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction ) ;
    public final EObject ruleAction() throws RecognitionException {
        EObject current = null;

        EObject this_SubGoal_0 = null;

        EObject this_Interaction_1 = null;

        EObject this_AnyAction_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1379:6: ( (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1380:1: (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1380:1: (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction )
            int alt22=3;
            alt22 = dfa22.predict(input);
            switch (alt22) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1381:5: this_SubGoal_0= ruleSubGoal
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getActionAccess().getSubGoalParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleSubGoal_in_ruleAction2440);
                    this_SubGoal_0=ruleSubGoal();
                    _fsp--;

                     
                            current = this_SubGoal_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1391:5: this_Interaction_1= ruleInteraction
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getActionAccess().getInteractionParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleInteraction_in_ruleAction2467);
                    this_Interaction_1=ruleInteraction();
                    _fsp--;

                     
                            current = this_Interaction_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 3 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1401:5: this_AnyAction_2= ruleAnyAction
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getActionAccess().getAnyActionParserRuleCall_2(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleAnyAction_in_ruleAction2494);
                    this_AnyAction_2=ruleAnyAction();
                    _fsp--;

                     
                            current = this_AnyAction_2; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAction


    // $ANTLR start entryRuleAnyAction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1417:1: entryRuleAnyAction returns [EObject current=null] : iv_ruleAnyAction= ruleAnyAction EOF ;
    public final EObject entryRuleAnyAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnyAction = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1418:2: (iv_ruleAnyAction= ruleAnyAction EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1419:2: iv_ruleAnyAction= ruleAnyAction EOF
            {
             currentNode = createCompositeNode(grammarAccess.getAnyActionRule(), currentNode); 
            pushFollow(FOLLOW_ruleAnyAction_in_entryRuleAnyAction2529);
            iv_ruleAnyAction=ruleAnyAction();
            _fsp--;

             current =iv_ruleAnyAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnyAction2539); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAnyAction


    // $ANTLR start ruleAnyAction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1426:1: ruleAnyAction returns [EObject current=null] : ( (lv_description_0_0= rulePlainText ) ) ;
    public final EObject ruleAnyAction() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_description_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1431:6: ( ( (lv_description_0_0= rulePlainText ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1432:1: ( (lv_description_0_0= rulePlainText ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1432:1: ( (lv_description_0_0= rulePlainText ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1433:1: (lv_description_0_0= rulePlainText )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1433:1: (lv_description_0_0= rulePlainText )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1434:3: lv_description_0_0= rulePlainText
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getAnyActionAccess().getDescriptionPlainTextParserRuleCall_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleAnyAction2584);
            lv_description_0_0=rulePlainText();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getAnyActionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"description",
            	        		lv_description_0_0, 
            	        		"PlainText", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAnyAction


    // $ANTLR start entryRuleSubGoal
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1464:1: entryRuleSubGoal returns [EObject current=null] : iv_ruleSubGoal= ruleSubGoal EOF ;
    public final EObject entryRuleSubGoal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubGoal = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1465:2: (iv_ruleSubGoal= ruleSubGoal EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1466:2: iv_ruleSubGoal= ruleSubGoal EOF
            {
             currentNode = createCompositeNode(grammarAccess.getSubGoalRule(), currentNode); 
            pushFollow(FOLLOW_ruleSubGoal_in_entryRuleSubGoal2619);
            iv_ruleSubGoal=ruleSubGoal();
            _fsp--;

             current =iv_ruleSubGoal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubGoal2629); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSubGoal


    // $ANTLR start ruleSubGoal
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1473:1: ruleSubGoal returns [EObject current=null] : ( ( ruleNAME ) ) ;
    public final EObject ruleSubGoal() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1478:6: ( ( ( ruleNAME ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1479:1: ( ( ruleNAME ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1479:1: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1480:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1480:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1481:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getSubGoalRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getSubGoalAccess().getIncludeUseCaseUseCaseCrossReference_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleSubGoal2676);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSubGoal


    // $ANTLR start entryRuleInteraction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1503:1: entryRuleInteraction returns [EObject current=null] : iv_ruleInteraction= ruleInteraction EOF ;
    public final EObject entryRuleInteraction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInteraction = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1504:2: (iv_ruleInteraction= ruleInteraction EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1505:2: iv_ruleInteraction= ruleInteraction EOF
            {
             currentNode = createCompositeNode(grammarAccess.getInteractionRule(), currentNode); 
            pushFollow(FOLLOW_ruleInteraction_in_entryRuleInteraction2711);
            iv_ruleInteraction=ruleInteraction();
            _fsp--;

             current =iv_ruleInteraction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInteraction2721); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleInteraction


    // $ANTLR start ruleInteraction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1512:1: ruleInteraction returns [EObject current=null] : ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) ) ;
    public final EObject ruleInteraction() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_description_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1517:6: ( ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1518:1: ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1518:1: ( ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1518:2: ( (lv_description_0_0= rulePlainText ) ) ( ( ruleNAME ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1518:2: ( (lv_description_0_0= rulePlainText ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1519:1: (lv_description_0_0= rulePlainText )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1519:1: (lv_description_0_0= rulePlainText )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1520:3: lv_description_0_0= rulePlainText
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getInteractionAccess().getDescriptionPlainTextParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleInteraction2767);
            lv_description_0_0=rulePlainText();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getInteractionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"description",
            	        		lv_description_0_0, 
            	        		"PlainText", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1542:2: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1543:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1543:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1544:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getInteractionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getInteractionAccess().getSubjectDataCrossReference_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleInteraction2790);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleInteraction


    // $ANTLR start entryRuleSingleStepSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1566:1: entryRuleSingleStepSelector returns [EObject current=null] : iv_ruleSingleStepSelector= ruleSingleStepSelector EOF ;
    public final EObject entryRuleSingleStepSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSingleStepSelector = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1567:2: (iv_ruleSingleStepSelector= ruleSingleStepSelector EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1568:2: iv_ruleSingleStepSelector= ruleSingleStepSelector EOF
            {
             currentNode = createCompositeNode(grammarAccess.getSingleStepSelectorRule(), currentNode); 
            pushFollow(FOLLOW_ruleSingleStepSelector_in_entryRuleSingleStepSelector2826);
            iv_ruleSingleStepSelector=ruleSingleStepSelector();
            _fsp--;

             current =iv_ruleSingleStepSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSingleStepSelector2836); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSingleStepSelector


    // $ANTLR start ruleSingleStepSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1575:1: ruleSingleStepSelector returns [EObject current=null] : ( ( ruleORD ) ) ;
    public final EObject ruleSingleStepSelector() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1580:6: ( ( ( ruleORD ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1581:1: ( ( ruleORD ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1581:1: ( ( ruleORD ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1582:1: ( ruleORD )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1582:1: ( ruleORD )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1583:3: ruleORD
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getSingleStepSelectorRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getSingleStepSelectorAccess().getStepActionStepCrossReference_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleSingleStepSelector2883);
            ruleORD();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSingleStepSelector


    // $ANTLR start entryRuleStepRangeSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1605:1: entryRuleStepRangeSelector returns [EObject current=null] : iv_ruleStepRangeSelector= ruleStepRangeSelector EOF ;
    public final EObject entryRuleStepRangeSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStepRangeSelector = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1606:2: (iv_ruleStepRangeSelector= ruleStepRangeSelector EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1607:2: iv_ruleStepRangeSelector= ruleStepRangeSelector EOF
            {
             currentNode = createCompositeNode(grammarAccess.getStepRangeSelectorRule(), currentNode); 
            pushFollow(FOLLOW_ruleStepRangeSelector_in_entryRuleStepRangeSelector2918);
            iv_ruleStepRangeSelector=ruleStepRangeSelector();
            _fsp--;

             current =iv_ruleStepRangeSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStepRangeSelector2928); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStepRangeSelector


    // $ANTLR start ruleStepRangeSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1614:1: ruleStepRangeSelector returns [EObject current=null] : ( ( ( ruleORD ) ) '-' ( ( ruleORD ) ) ) ;
    public final EObject ruleStepRangeSelector() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1619:6: ( ( ( ( ruleORD ) ) '-' ( ( ruleORD ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1620:1: ( ( ( ruleORD ) ) '-' ( ( ruleORD ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1620:1: ( ( ( ruleORD ) ) '-' ( ( ruleORD ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1620:2: ( ( ruleORD ) ) '-' ( ( ruleORD ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1620:2: ( ( ruleORD ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1621:1: ( ruleORD )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1621:1: ( ruleORD )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1622:3: ruleORD
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getStepRangeSelectorRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getStepRangeSelectorAccess().getFromActionStepCrossReference_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleStepRangeSelector2976);
            ruleORD();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,33,FOLLOW_33_in_ruleStepRangeSelector2986); 

                    createLeafNode(grammarAccess.getStepRangeSelectorAccess().getHyphenMinusKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1640:1: ( ( ruleORD ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1641:1: ( ruleORD )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1641:1: ( ruleORD )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1642:3: ruleORD
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getStepRangeSelectorRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getStepRangeSelectorAccess().getToActionStepCrossReference_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleStepRangeSelector3009);
            ruleORD();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStepRangeSelector


    // $ANTLR start entryRuleAbstractStepSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1664:1: entryRuleAbstractStepSelector returns [EObject current=null] : iv_ruleAbstractStepSelector= ruleAbstractStepSelector EOF ;
    public final EObject entryRuleAbstractStepSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractStepSelector = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1665:2: (iv_ruleAbstractStepSelector= ruleAbstractStepSelector EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1666:2: iv_ruleAbstractStepSelector= ruleAbstractStepSelector EOF
            {
             currentNode = createCompositeNode(grammarAccess.getAbstractStepSelectorRule(), currentNode); 
            pushFollow(FOLLOW_ruleAbstractStepSelector_in_entryRuleAbstractStepSelector3045);
            iv_ruleAbstractStepSelector=ruleAbstractStepSelector();
            _fsp--;

             current =iv_ruleAbstractStepSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractStepSelector3055); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAbstractStepSelector


    // $ANTLR start ruleAbstractStepSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1673:1: ruleAbstractStepSelector returns [EObject current=null] : (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector ) ;
    public final EObject ruleAbstractStepSelector() throws RecognitionException {
        EObject current = null;

        EObject this_SingleStepSelector_0 = null;

        EObject this_StepRangeSelector_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1678:6: ( (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1679:1: (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1679:1: (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==RULE_INT) ) {
                int LA23_1 = input.LA(2);

                if ( (LA23_1==33) ) {
                    alt23=2;
                }
                else if ( (LA23_1==EOF||(LA23_1>=RULE_ID && LA23_1<=RULE_UPID)||LA23_1==35) ) {
                    alt23=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("1679:1: (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector )", 23, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1679:1: (this_SingleStepSelector_0= ruleSingleStepSelector | this_StepRangeSelector_1= ruleStepRangeSelector )", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1680:5: this_SingleStepSelector_0= ruleSingleStepSelector
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getAbstractStepSelectorAccess().getSingleStepSelectorParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleSingleStepSelector_in_ruleAbstractStepSelector3102);
                    this_SingleStepSelector_0=ruleSingleStepSelector();
                    _fsp--;

                     
                            current = this_SingleStepSelector_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1690:5: this_StepRangeSelector_1= ruleStepRangeSelector
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getAbstractStepSelectorAccess().getStepRangeSelectorParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleStepRangeSelector_in_ruleAbstractStepSelector3129);
                    this_StepRangeSelector_1=ruleStepRangeSelector();
                    _fsp--;

                     
                            current = this_StepRangeSelector_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAbstractStepSelector


    // $ANTLR start entryRuleStepListSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1706:1: entryRuleStepListSelector returns [EObject current=null] : iv_ruleStepListSelector= ruleStepListSelector EOF ;
    public final EObject entryRuleStepListSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStepListSelector = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1707:2: (iv_ruleStepListSelector= ruleStepListSelector EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1708:2: iv_ruleStepListSelector= ruleStepListSelector EOF
            {
             currentNode = createCompositeNode(grammarAccess.getStepListSelectorRule(), currentNode); 
            pushFollow(FOLLOW_ruleStepListSelector_in_entryRuleStepListSelector3164);
            iv_ruleStepListSelector=ruleStepListSelector();
            _fsp--;

             current =iv_ruleStepListSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStepListSelector3174); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStepListSelector


    // $ANTLR start ruleStepListSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1715:1: ruleStepListSelector returns [EObject current=null] : ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) ( ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* ) ;
    public final EObject ruleStepListSelector() throws RecognitionException {
        EObject current = null;

        EObject lv_selectors_0_0 = null;

        EObject lv_selectors_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1720:6: ( ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) ( ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1721:1: ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) ( ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1721:1: ( ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) ( ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )* )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1721:2: ( (lv_selectors_0_0= ruleAbstractStepSelector ) ) ( ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )*
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1721:2: ( (lv_selectors_0_0= ruleAbstractStepSelector ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1722:1: (lv_selectors_0_0= ruleAbstractStepSelector )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1722:1: (lv_selectors_0_0= ruleAbstractStepSelector )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1723:3: lv_selectors_0_0= ruleAbstractStepSelector
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getStepListSelectorAccess().getSelectorsAbstractStepSelectorParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3220);
            lv_selectors_0_0=ruleAbstractStepSelector();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getStepListSelectorRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		add(
            	       			current, 
            	       			"selectors",
            	        		lv_selectors_0_0, 
            	        		"AbstractStepSelector", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1745:2: ( ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==35) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1745:4: ',' ( (lv_selectors_2_0= ruleAbstractStepSelector ) )
            	    {
            	    match(input,35,FOLLOW_35_in_ruleStepListSelector3231); 

            	            createLeafNode(grammarAccess.getStepListSelectorAccess().getCommaKeyword_1_0(), null); 
            	        
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1749:1: ( (lv_selectors_2_0= ruleAbstractStepSelector ) )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1750:1: (lv_selectors_2_0= ruleAbstractStepSelector )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1750:1: (lv_selectors_2_0= ruleAbstractStepSelector )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1751:3: lv_selectors_2_0= ruleAbstractStepSelector
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getStepListSelectorAccess().getSelectorsAbstractStepSelectorParserRuleCall_1_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3252);
            	    lv_selectors_2_0=ruleAbstractStepSelector();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getStepListSelectorRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"selectors",
            	    	        		lv_selectors_2_0, 
            	    	        		"AbstractStepSelector", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStepListSelector


    // $ANTLR start entryRuleAllStepsSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1781:1: entryRuleAllStepsSelector returns [EObject current=null] : iv_ruleAllStepsSelector= ruleAllStepsSelector EOF ;
    public final EObject entryRuleAllStepsSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAllStepsSelector = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1782:2: (iv_ruleAllStepsSelector= ruleAllStepsSelector EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1783:2: iv_ruleAllStepsSelector= ruleAllStepsSelector EOF
            {
             currentNode = createCompositeNode(grammarAccess.getAllStepsSelectorRule(), currentNode); 
            pushFollow(FOLLOW_ruleAllStepsSelector_in_entryRuleAllStepsSelector3290);
            iv_ruleAllStepsSelector=ruleAllStepsSelector();
            _fsp--;

             current =iv_ruleAllStepsSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAllStepsSelector3300); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAllStepsSelector


    // $ANTLR start ruleAllStepsSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1790:1: ruleAllStepsSelector returns [EObject current=null] : ( (lv_anywhere_0_0= '*' ) ) ;
    public final EObject ruleAllStepsSelector() throws RecognitionException {
        EObject current = null;

        Token lv_anywhere_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1795:6: ( ( (lv_anywhere_0_0= '*' ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1796:1: ( (lv_anywhere_0_0= '*' ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1796:1: ( (lv_anywhere_0_0= '*' ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1797:1: (lv_anywhere_0_0= '*' )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1797:1: (lv_anywhere_0_0= '*' )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1798:3: lv_anywhere_0_0= '*'
            {
            lv_anywhere_0_0=(Token)input.LT(1);
            match(input,36,FOLLOW_36_in_ruleAllStepsSelector3342); 

                    createLeafNode(grammarAccess.getAllStepsSelectorAccess().getAnywhereAsteriskKeyword_0(), "anywhere"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getAllStepsSelectorRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "anywhere", true, "*", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAllStepsSelector


    // $ANTLR start entryRuleStepSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1825:1: entryRuleStepSelector returns [EObject current=null] : iv_ruleStepSelector= ruleStepSelector EOF ;
    public final EObject entryRuleStepSelector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStepSelector = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1826:2: (iv_ruleStepSelector= ruleStepSelector EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1827:2: iv_ruleStepSelector= ruleStepSelector EOF
            {
             currentNode = createCompositeNode(grammarAccess.getStepSelectorRule(), currentNode); 
            pushFollow(FOLLOW_ruleStepSelector_in_entryRuleStepSelector3390);
            iv_ruleStepSelector=ruleStepSelector();
            _fsp--;

             current =iv_ruleStepSelector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStepSelector3400); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStepSelector


    // $ANTLR start ruleStepSelector
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1834:1: ruleStepSelector returns [EObject current=null] : (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector ) ;
    public final EObject ruleStepSelector() throws RecognitionException {
        EObject current = null;

        EObject this_StepListSelector_0 = null;

        EObject this_AllStepsSelector_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1839:6: ( (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1840:1: (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1840:1: (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector )
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==RULE_INT) ) {
                alt25=1;
            }
            else if ( (LA25_0==36) ) {
                alt25=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1840:1: (this_StepListSelector_0= ruleStepListSelector | this_AllStepsSelector_1= ruleAllStepsSelector )", 25, 0, input);

                throw nvae;
            }
            switch (alt25) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1841:5: this_StepListSelector_0= ruleStepListSelector
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getStepSelectorAccess().getStepListSelectorParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleStepListSelector_in_ruleStepSelector3447);
                    this_StepListSelector_0=ruleStepListSelector();
                    _fsp--;

                     
                            current = this_StepListSelector_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1851:5: this_AllStepsSelector_1= ruleAllStepsSelector
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getStepSelectorAccess().getAllStepsSelectorParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleAllStepsSelector_in_ruleStepSelector3474);
                    this_AllStepsSelector_1=ruleAllStepsSelector();
                    _fsp--;

                     
                            current = this_AllStepsSelector_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStepSelector


    // $ANTLR start entryRuleExtensionEndAction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1867:1: entryRuleExtensionEndAction returns [EObject current=null] : iv_ruleExtensionEndAction= ruleExtensionEndAction EOF ;
    public final EObject entryRuleExtensionEndAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionEndAction = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1868:2: (iv_ruleExtensionEndAction= ruleExtensionEndAction EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1869:2: iv_ruleExtensionEndAction= ruleExtensionEndAction EOF
            {
             currentNode = createCompositeNode(grammarAccess.getExtensionEndActionRule(), currentNode); 
            pushFollow(FOLLOW_ruleExtensionEndAction_in_entryRuleExtensionEndAction3509);
            iv_ruleExtensionEndAction=ruleExtensionEndAction();
            _fsp--;

             current =iv_ruleExtensionEndAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionEndAction3519); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleExtensionEndAction


    // $ANTLR start ruleExtensionEndAction
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1876:1: ruleExtensionEndAction returns [EObject current=null] : (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto ) ;
    public final EObject ruleExtensionEndAction() throws RecognitionException {
        EObject current = null;

        EObject this_ScenarioEnd_0 = null;

        EObject this_Goto_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1881:6: ( (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1882:1: (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1882:1: (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto )
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==37) ) {
                alt26=1;
            }
            else if ( (LA26_0==38) ) {
                alt26=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1882:1: (this_ScenarioEnd_0= ruleScenarioEnd | this_Goto_1= ruleGoto )", 26, 0, input);

                throw nvae;
            }
            switch (alt26) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1883:5: this_ScenarioEnd_0= ruleScenarioEnd
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getExtensionEndActionAccess().getScenarioEndParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleScenarioEnd_in_ruleExtensionEndAction3566);
                    this_ScenarioEnd_0=ruleScenarioEnd();
                    _fsp--;

                     
                            current = this_ScenarioEnd_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1893:5: this_Goto_1= ruleGoto
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getExtensionEndActionAccess().getGotoParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleGoto_in_ruleExtensionEndAction3593);
                    this_Goto_1=ruleGoto();
                    _fsp--;

                     
                            current = this_Goto_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleExtensionEndAction


    // $ANTLR start entryRuleScenarioEnd
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1909:1: entryRuleScenarioEnd returns [EObject current=null] : iv_ruleScenarioEnd= ruleScenarioEnd EOF ;
    public final EObject entryRuleScenarioEnd() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleScenarioEnd = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1910:2: (iv_ruleScenarioEnd= ruleScenarioEnd EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1911:2: iv_ruleScenarioEnd= ruleScenarioEnd EOF
            {
             currentNode = createCompositeNode(grammarAccess.getScenarioEndRule(), currentNode); 
            pushFollow(FOLLOW_ruleScenarioEnd_in_entryRuleScenarioEnd3628);
            iv_ruleScenarioEnd=ruleScenarioEnd();
            _fsp--;

             current =iv_ruleScenarioEnd; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleScenarioEnd3638); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleScenarioEnd


    // $ANTLR start ruleScenarioEnd
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1918:1: ruleScenarioEnd returns [EObject current=null] : ( 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) ) ;
    public final EObject ruleScenarioEnd() throws RecognitionException {
        EObject current = null;

        Enumerator lv_result_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1923:6: ( ( 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1924:1: ( 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1924:1: ( 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1924:3: 'Use case ends with' ( (lv_result_1_0= ruleScenarioResult ) )
            {
            match(input,37,FOLLOW_37_in_ruleScenarioEnd3673); 

                    createLeafNode(grammarAccess.getScenarioEndAccess().getUseCaseEndsWithKeyword_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1928:1: ( (lv_result_1_0= ruleScenarioResult ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1929:1: (lv_result_1_0= ruleScenarioResult )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1929:1: (lv_result_1_0= ruleScenarioResult )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1930:3: lv_result_1_0= ruleScenarioResult
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getScenarioEndAccess().getResultScenarioResultEnumRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleScenarioResult_in_ruleScenarioEnd3694);
            lv_result_1_0=ruleScenarioResult();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getScenarioEndRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"result",
            	        		lv_result_1_0, 
            	        		"ScenarioResult", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleScenarioEnd


    // $ANTLR start entryRuleGoto
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1960:1: entryRuleGoto returns [EObject current=null] : iv_ruleGoto= ruleGoto EOF ;
    public final EObject entryRuleGoto() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGoto = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1961:2: (iv_ruleGoto= ruleGoto EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1962:2: iv_ruleGoto= ruleGoto EOF
            {
             currentNode = createCompositeNode(grammarAccess.getGotoRule(), currentNode); 
            pushFollow(FOLLOW_ruleGoto_in_entryRuleGoto3730);
            iv_ruleGoto=ruleGoto();
            _fsp--;

             current =iv_ruleGoto; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGoto3740); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleGoto


    // $ANTLR start ruleGoto
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1969:1: ruleGoto returns [EObject current=null] : ( 'Use case continues with step' ( ( ruleORD ) ) ) ;
    public final EObject ruleGoto() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1974:6: ( ( 'Use case continues with step' ( ( ruleORD ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1975:1: ( 'Use case continues with step' ( ( ruleORD ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1975:1: ( 'Use case continues with step' ( ( ruleORD ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1975:3: 'Use case continues with step' ( ( ruleORD ) )
            {
            match(input,38,FOLLOW_38_in_ruleGoto3775); 

                    createLeafNode(grammarAccess.getGotoAccess().getUseCaseContinuesWithStepKeyword_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1979:1: ( ( ruleORD ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1980:1: ( ruleORD )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1980:1: ( ruleORD )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:1981:3: ruleORD
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getGotoRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getGotoAccess().getNextStepActionStepCrossReference_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleORD_in_ruleGoto3798);
            ruleORD();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleGoto


    // $ANTLR start entryRuleExtensionStep
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2003:1: entryRuleExtensionStep returns [EObject current=null] : iv_ruleExtensionStep= ruleExtensionStep EOF ;
    public final EObject entryRuleExtensionStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionStep = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2004:2: (iv_ruleExtensionStep= ruleExtensionStep EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2005:2: iv_ruleExtensionStep= ruleExtensionStep EOF
            {
             currentNode = createCompositeNode(grammarAccess.getExtensionStepRule(), currentNode); 
            pushFollow(FOLLOW_ruleExtensionStep_in_entryRuleExtensionStep3834);
            iv_ruleExtensionStep=ruleExtensionStep();
            _fsp--;

             current =iv_ruleExtensionStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionStep3844); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleExtensionStep


    // $ANTLR start ruleExtensionStep
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2012:1: ruleExtensionStep returns [EObject current=null] : ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) ) ;
    public final EObject ruleExtensionStep() throws RecognitionException {
        EObject current = null;

        EObject lv_action_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2017:6: ( ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2018:1: ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2018:1: ( ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2018:2: ( ( ruleNAME ) ) '-' ( (lv_action_2_0= ruleAction ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2018:2: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2019:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2019:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2020:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getExtensionStepRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getExtensionStepAccess().getActorActorCrossReference_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleExtensionStep3892);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,33,FOLLOW_33_in_ruleExtensionStep3902); 

                    createLeafNode(grammarAccess.getExtensionStepAccess().getHyphenMinusKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2038:1: ( (lv_action_2_0= ruleAction ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2039:1: (lv_action_2_0= ruleAction )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2039:1: (lv_action_2_0= ruleAction )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2040:3: lv_action_2_0= ruleAction
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getExtensionStepAccess().getActionActionParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleAction_in_ruleExtensionStep3923);
            lv_action_2_0=ruleAction();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getExtensionStepRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"action",
            	        		lv_action_2_0, 
            	        		"Action", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleExtensionStep


    // $ANTLR start entryRuleExtensionEndStep
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2070:1: entryRuleExtensionEndStep returns [EObject current=null] : iv_ruleExtensionEndStep= ruleExtensionEndStep EOF ;
    public final EObject entryRuleExtensionEndStep() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionEndStep = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2071:2: (iv_ruleExtensionEndStep= ruleExtensionEndStep EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2072:2: iv_ruleExtensionEndStep= ruleExtensionEndStep EOF
            {
             currentNode = createCompositeNode(grammarAccess.getExtensionEndStepRule(), currentNode); 
            pushFollow(FOLLOW_ruleExtensionEndStep_in_entryRuleExtensionEndStep3959);
            iv_ruleExtensionEndStep=ruleExtensionEndStep();
            _fsp--;

             current =iv_ruleExtensionEndStep; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionEndStep3969); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleExtensionEndStep


    // $ANTLR start ruleExtensionEndStep
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2079:1: ruleExtensionEndStep returns [EObject current=null] : ( (lv_action_0_0= ruleExtensionEndAction ) ) ;
    public final EObject ruleExtensionEndStep() throws RecognitionException {
        EObject current = null;

        EObject lv_action_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2084:6: ( ( (lv_action_0_0= ruleExtensionEndAction ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2085:1: ( (lv_action_0_0= ruleExtensionEndAction ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2085:1: ( (lv_action_0_0= ruleExtensionEndAction ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2086:1: (lv_action_0_0= ruleExtensionEndAction )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2086:1: (lv_action_0_0= ruleExtensionEndAction )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2087:3: lv_action_0_0= ruleExtensionEndAction
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getExtensionEndStepAccess().getActionExtensionEndActionParserRuleCall_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleExtensionEndAction_in_ruleExtensionEndStep4014);
            lv_action_0_0=ruleExtensionEndAction();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getExtensionEndStepRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"action",
            	        		lv_action_0_0, 
            	        		"ExtensionEndAction", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleExtensionEndStep


    // $ANTLR start entryRuleExtension
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2117:1: entryRuleExtension returns [EObject current=null] : iv_ruleExtension= ruleExtension EOF ;
    public final EObject entryRuleExtension() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtension = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2118:2: (iv_ruleExtension= ruleExtension EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2119:2: iv_ruleExtension= ruleExtension EOF
            {
             currentNode = createCompositeNode(grammarAccess.getExtensionRule(), currentNode); 
            pushFollow(FOLLOW_ruleExtension_in_entryRuleExtension4049);
            iv_ruleExtension=ruleExtension();
            _fsp--;

             current =iv_ruleExtension; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtension4059); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleExtension


    // $ANTLR start ruleExtension
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2126:1: ruleExtension returns [EObject current=null] : ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) ) ;
    public final EObject ruleExtension() throws RecognitionException {
        EObject current = null;

        EObject lv_occurance_0_0 = null;

        EObject lv_condition_1_0 = null;

        EObject lv_steps_3_0 = null;

        EObject lv_steps_4_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2131:6: ( ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2132:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2132:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2132:2: ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_condition_1_0= ruleCondition ) ) ':' ( (lv_steps_3_0= ruleExtensionStep ) )* ( (lv_steps_4_0= ruleExtensionEndStep ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2132:2: ( (lv_occurance_0_0= ruleStepSelector ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2133:1: (lv_occurance_0_0= ruleStepSelector )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2133:1: (lv_occurance_0_0= ruleStepSelector )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2134:3: lv_occurance_0_0= ruleStepSelector
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getExtensionAccess().getOccuranceStepSelectorParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleStepSelector_in_ruleExtension4105);
            lv_occurance_0_0=ruleStepSelector();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getExtensionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"occurance",
            	        		lv_occurance_0_0, 
            	        		"StepSelector", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2156:2: ( (lv_condition_1_0= ruleCondition ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2157:1: (lv_condition_1_0= ruleCondition )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2157:1: (lv_condition_1_0= ruleCondition )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2158:3: lv_condition_1_0= ruleCondition
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getExtensionAccess().getConditionConditionParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleCondition_in_ruleExtension4126);
            lv_condition_1_0=ruleCondition();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getExtensionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"condition",
            	        		lv_condition_1_0, 
            	        		"Condition", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,16,FOLLOW_16_in_ruleExtension4136); 

                    createLeafNode(grammarAccess.getExtensionAccess().getColonKeyword_2(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2184:1: ( (lv_steps_3_0= ruleExtensionStep ) )*
            loop27:
            do {
                int alt27=2;
                int LA27_0 = input.LA(1);

                if ( (LA27_0==RULE_UPID) ) {
                    alt27=1;
                }


                switch (alt27) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2185:1: (lv_steps_3_0= ruleExtensionStep )
            	    {
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2185:1: (lv_steps_3_0= ruleExtensionStep )
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2186:3: lv_steps_3_0= ruleExtensionStep
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getExtensionAccess().getStepsExtensionStepParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleExtensionStep_in_ruleExtension4157);
            	    lv_steps_3_0=ruleExtensionStep();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getExtensionRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"steps",
            	    	        		lv_steps_3_0, 
            	    	        		"ExtensionStep", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop27;
                }
            } while (true);

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2208:3: ( (lv_steps_4_0= ruleExtensionEndStep ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2209:1: (lv_steps_4_0= ruleExtensionEndStep )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2209:1: (lv_steps_4_0= ruleExtensionEndStep )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2210:3: lv_steps_4_0= ruleExtensionEndStep
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getExtensionAccess().getStepsExtensionEndStepParserRuleCall_4_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleExtensionEndStep_in_ruleExtension4179);
            lv_steps_4_0=ruleExtensionEndStep();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getExtensionRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		add(
            	       			current, 
            	       			"steps",
            	        		lv_steps_4_0, 
            	        		"ExtensionEndStep", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleExtension


    // $ANTLR start entryRuleVariant
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2240:1: entryRuleVariant returns [EObject current=null] : iv_ruleVariant= ruleVariant EOF ;
    public final EObject entryRuleVariant() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariant = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2241:2: (iv_ruleVariant= ruleVariant EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2242:2: iv_ruleVariant= ruleVariant EOF
            {
             currentNode = createCompositeNode(grammarAccess.getVariantRule(), currentNode); 
            pushFollow(FOLLOW_ruleVariant_in_entryRuleVariant4215);
            iv_ruleVariant=ruleVariant();
            _fsp--;

             current =iv_ruleVariant; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariant4225); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleVariant


    // $ANTLR start ruleVariant
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2249:1: ruleVariant returns [EObject current=null] : ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) ) ;
    public final EObject ruleVariant() throws RecognitionException {
        EObject current = null;

        EObject lv_occurance_0_0 = null;

        AntlrDatatypeRuleToken lv_description_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2254:6: ( ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2255:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2255:1: ( ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2255:2: ( (lv_occurance_0_0= ruleStepSelector ) ) ( (lv_description_1_0= rulePlainText ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2255:2: ( (lv_occurance_0_0= ruleStepSelector ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2256:1: (lv_occurance_0_0= ruleStepSelector )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2256:1: (lv_occurance_0_0= ruleStepSelector )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2257:3: lv_occurance_0_0= ruleStepSelector
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getVariantAccess().getOccuranceStepSelectorParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleStepSelector_in_ruleVariant4271);
            lv_occurance_0_0=ruleStepSelector();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getVariantRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"occurance",
            	        		lv_occurance_0_0, 
            	        		"StepSelector", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2279:2: ( (lv_description_1_0= rulePlainText ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2280:1: (lv_description_1_0= rulePlainText )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2280:1: (lv_description_1_0= rulePlainText )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2281:3: lv_description_1_0= rulePlainText
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getVariantAccess().getDescriptionPlainTextParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleVariant4292);
            lv_description_1_0=rulePlainText();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getVariantRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"description",
            	        		lv_description_1_0, 
            	        		"PlainText", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVariant


    // $ANTLR start entryRuleIssue
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2311:1: entryRuleIssue returns [EObject current=null] : iv_ruleIssue= ruleIssue EOF ;
    public final EObject entryRuleIssue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIssue = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2312:2: (iv_ruleIssue= ruleIssue EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2313:2: iv_ruleIssue= ruleIssue EOF
            {
             currentNode = createCompositeNode(grammarAccess.getIssueRule(), currentNode); 
            pushFollow(FOLLOW_ruleIssue_in_entryRuleIssue4328);
            iv_ruleIssue=ruleIssue();
            _fsp--;

             current =iv_ruleIssue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIssue4338); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleIssue


    // $ANTLR start ruleIssue
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2320:1: ruleIssue returns [EObject current=null] : ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= rulePlainText ) ) '?' ) ;
    public final EObject ruleIssue() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_description_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2325:6: ( ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= rulePlainText ) ) '?' ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2326:1: ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= rulePlainText ) ) '?' )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2326:1: ( ( ( ruleNAME ) ) '-' ( (lv_description_2_0= rulePlainText ) ) '?' )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2326:2: ( ( ruleNAME ) ) '-' ( (lv_description_2_0= rulePlainText ) ) '?'
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2326:2: ( ( ruleNAME ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2327:1: ( ruleNAME )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2327:1: ( ruleNAME )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2328:3: ruleNAME
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getIssueRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
             
            	        currentNode=createCompositeNode(grammarAccess.getIssueAccess().getActorActorCrossReference_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleIssue4386);
            ruleNAME();
            _fsp--;

             
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,33,FOLLOW_33_in_ruleIssue4396); 

                    createLeafNode(grammarAccess.getIssueAccess().getHyphenMinusKeyword_1(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2346:1: ( (lv_description_2_0= rulePlainText ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2347:1: (lv_description_2_0= rulePlainText )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2347:1: (lv_description_2_0= rulePlainText )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2348:3: lv_description_2_0= rulePlainText
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getIssueAccess().getDescriptionPlainTextParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePlainText_in_ruleIssue4417);
            lv_description_2_0=rulePlainText();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getIssueRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"description",
            	        		lv_description_2_0, 
            	        		"PlainText", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,39,FOLLOW_39_in_ruleIssue4427); 

                    createLeafNode(grammarAccess.getIssueAccess().getQuestionMarkKeyword_3(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleIssue


    // $ANTLR start entryRuleORD
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2382:1: entryRuleORD returns [String current=null] : iv_ruleORD= ruleORD EOF ;
    public final String entryRuleORD() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleORD = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2383:2: (iv_ruleORD= ruleORD EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2384:2: iv_ruleORD= ruleORD EOF
            {
             currentNode = createCompositeNode(grammarAccess.getORDRule(), currentNode); 
            pushFollow(FOLLOW_ruleORD_in_entryRuleORD4464);
            iv_ruleORD=ruleORD();
            _fsp--;

             current =iv_ruleORD.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleORD4475); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleORD


    // $ANTLR start ruleORD
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2391:1: ruleORD returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_INT_0= RULE_INT ;
    public final AntlrDatatypeRuleToken ruleORD() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_INT_0=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2396:6: (this_INT_0= RULE_INT )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2397:5: this_INT_0= RULE_INT
            {
            this_INT_0=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleORD4514); 

            		current.merge(this_INT_0);
                
             
                createLeafNode(grammarAccess.getORDAccess().getINTTerminalRuleCall(), null); 
                

            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleORD


    // $ANTLR start entryRulePlainText
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2412:1: entryRulePlainText returns [String current=null] : iv_rulePlainText= rulePlainText EOF ;
    public final String entryRulePlainText() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePlainText = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2413:2: (iv_rulePlainText= rulePlainText EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2414:2: iv_rulePlainText= rulePlainText EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPlainTextRule(), currentNode); 
            pushFollow(FOLLOW_rulePlainText_in_entryRulePlainText4559);
            iv_rulePlainText=rulePlainText();
            _fsp--;

             current =iv_rulePlainText.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlainText4570); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePlainText


    // $ANTLR start rulePlainText
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2421:1: rulePlainText returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) ;
    public final AntlrDatatypeRuleToken rulePlainText() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token this_ID_1=null;
        Token kw=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2426:6: ( (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2427:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2427:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2427:6: this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText4610); 

            		current.merge(this_ID_0);
                
             
                createLeafNode(grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2434:1: (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            loop28:
            do {
                int alt28=6;
                switch ( input.LA(1) ) {
                case RULE_ID:
                    {
                    alt28=1;
                    }
                    break;
                case 35:
                    {
                    alt28=2;
                    }
                    break;
                case 40:
                    {
                    alt28=3;
                    }
                    break;
                case 41:
                    {
                    alt28=4;
                    }
                    break;
                case 42:
                    {
                    alt28=5;
                    }
                    break;

                }

                switch (alt28) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2434:6: this_ID_1= RULE_ID
            	    {
            	    this_ID_1=(Token)input.LT(1);
            	    match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText4631); 

            	    		current.merge(this_ID_1);
            	        
            	     
            	        createLeafNode(grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_1_0(), null); 
            	        

            	    }
            	    break;
            	case 2 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2443:2: kw= ','
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,35,FOLLOW_35_in_rulePlainText4655); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getCommaKeyword_1_1(), null); 
            	        

            	    }
            	    break;
            	case 3 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2450:2: kw= '('
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,40,FOLLOW_40_in_rulePlainText4674); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getLeftParenthesisKeyword_1_2(), null); 
            	        

            	    }
            	    break;
            	case 4 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2457:2: kw= ')'
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,41,FOLLOW_41_in_rulePlainText4693); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getRightParenthesisKeyword_1_3(), null); 
            	        

            	    }
            	    break;
            	case 5 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2464:2: kw= '/'
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,42,FOLLOW_42_in_rulePlainText4712); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getSolidusKeyword_1_4(), null); 
            	        

            	    }
            	    break;

            	default :
            	    break loop28;
                }
            } while (true);


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePlainText


    // $ANTLR start entryRuleNAME
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2477:1: entryRuleNAME returns [String current=null] : iv_ruleNAME= ruleNAME EOF ;
    public final String entryRuleNAME() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNAME = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2478:2: (iv_ruleNAME= ruleNAME EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2479:2: iv_ruleNAME= ruleNAME EOF
            {
             currentNode = createCompositeNode(grammarAccess.getNAMERule(), currentNode); 
            pushFollow(FOLLOW_ruleNAME_in_entryRuleNAME4755);
            iv_ruleNAME=ruleNAME();
            _fsp--;

             current =iv_ruleNAME.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNAME4766); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNAME


    // $ANTLR start ruleNAME
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2486:1: ruleNAME returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) ;
    public final AntlrDatatypeRuleToken ruleNAME() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_UPID_0=null;
        AntlrDatatypeRuleToken this_PlainText_1 = null;


         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2491:6: ( (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2492:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2492:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2492:6: this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )?
            {
            this_UPID_0=(Token)input.LT(1);
            match(input,RULE_UPID,FOLLOW_RULE_UPID_in_ruleNAME4806); 

            		current.merge(this_UPID_0);
                
             
                createLeafNode(grammarAccess.getNAMEAccess().getUPIDTerminalRuleCall_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2499:1: (this_PlainText_1= rulePlainText )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==RULE_ID) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2500:5: this_PlainText_1= rulePlainText
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getNAMEAccess().getPlainTextParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_rulePlainText_in_ruleNAME4834);
                    this_PlainText_1=rulePlainText();
                    _fsp--;


                    		current.merge(this_PlainText_1);
                        
                     
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNAME


    // $ANTLR start entryRuleImport
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2518:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2519:2: (iv_ruleImport= ruleImport EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2520:2: iv_ruleImport= ruleImport EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport4881);
            iv_ruleImport=ruleImport();
            _fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport4891); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImport


    // $ANTLR start ruleImport
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2527:1: ruleImport returns [EObject current=null] : ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2532:6: ( ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2533:1: ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2533:1: ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2533:3: 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            {
            match(input,43,FOLLOW_43_in_ruleImport4926); 

                    createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2537:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2538:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2538:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2539:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport4947);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildcard();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"importedNamespace",
            	        		lv_importedNamespace_1_0, 
            	        		"QualifiedNameWithWildcard", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImport


    // $ANTLR start entryRuleQualifiedName
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2569:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2570:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2571:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             currentNode = createCompositeNode(grammarAccess.getQualifiedNameRule(), currentNode); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName4984);
            iv_ruleQualifiedName=ruleQualifiedName();
            _fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName4995); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleQualifiedName


    // $ANTLR start ruleQualifiedName
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2578:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2583:6: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2584:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2584:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2584:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName5035); 

            		current.merge(this_ID_0);
                
             
                createLeafNode(grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0(), null); 
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2591:1: (kw= '.' this_ID_2= RULE_ID )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==34) ) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2592:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,34,FOLLOW_34_in_ruleQualifiedName5054); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0(), null); 
            	        
            	    this_ID_2=(Token)input.LT(1);
            	    match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName5069); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        createLeafNode(grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1(), null); 
            	        

            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleQualifiedName


    // $ANTLR start entryRuleQualifiedNameWithWildcard
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2612:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;


        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2613:2: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2614:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
            {
             currentNode = createCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule(), currentNode); 
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard5117);
            iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();
            _fsp--;

             current =iv_ruleQualifiedNameWithWildcard.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard5128); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleQualifiedNameWithWildcard


    // $ANTLR start ruleQualifiedNameWithWildcard
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2621:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2626:6: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2627:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2627:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2628:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    currentNode=createCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0(), currentNode); 
                
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard5175);
            this_QualifiedName_0=ruleQualifiedName();
            _fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    currentNode = currentNode.getParent();
                
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2638:1: (kw= '.*' )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==44) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2639:2: kw= '.*'
                    {
                    kw=(Token)input.LT(1);
                    match(input,44,FOLLOW_44_in_ruleQualifiedNameWithWildcard5194); 

                            current.merge(kw);
                            createLeafNode(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopAsteriskKeyword_1(), null); 
                        

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleQualifiedNameWithWildcard


    // $ANTLR start ruleScopeType
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2652:1: ruleScopeType returns [Enumerator current=null] : ( ( 'business' ) | ( 'system' ) | ( 'subsystem' ) ) ;
    public final Enumerator ruleScopeType() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2656:6: ( ( ( 'business' ) | ( 'system' ) | ( 'subsystem' ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2657:1: ( ( 'business' ) | ( 'system' ) | ( 'subsystem' ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2657:1: ( ( 'business' ) | ( 'system' ) | ( 'subsystem' ) )
            int alt32=3;
            switch ( input.LA(1) ) {
            case 45:
                {
                alt32=1;
                }
                break;
            case 46:
                {
                alt32=2;
                }
                break;
            case 47:
                {
                alt32=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("2657:1: ( ( 'business' ) | ( 'system' ) | ( 'subsystem' ) )", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2657:2: ( 'business' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2657:2: ( 'business' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2657:4: 'business'
                    {
                    match(input,45,FOLLOW_45_in_ruleScopeType5248); 

                            current = grammarAccess.getScopeTypeAccess().getBusinessEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getScopeTypeAccess().getBusinessEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2663:6: ( 'system' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2663:6: ( 'system' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2663:8: 'system'
                    {
                    match(input,46,FOLLOW_46_in_ruleScopeType5263); 

                            current = grammarAccess.getScopeTypeAccess().getSystemEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getScopeTypeAccess().getSystemEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2669:6: ( 'subsystem' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2669:6: ( 'subsystem' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2669:8: 'subsystem'
                    {
                    match(input,47,FOLLOW_47_in_ruleScopeType5278); 

                            current = grammarAccess.getScopeTypeAccess().getSubsystemEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getScopeTypeAccess().getSubsystemEnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleScopeType


    // $ANTLR start ruleVisibility
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2679:1: ruleVisibility returns [Enumerator current=null] : ( ( 'black-box' ) | ( 'white-box' ) ) ;
    public final Enumerator ruleVisibility() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2683:6: ( ( ( 'black-box' ) | ( 'white-box' ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2684:1: ( ( 'black-box' ) | ( 'white-box' ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2684:1: ( ( 'black-box' ) | ( 'white-box' ) )
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==48) ) {
                alt33=1;
            }
            else if ( (LA33_0==49) ) {
                alt33=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("2684:1: ( ( 'black-box' ) | ( 'white-box' ) )", 33, 0, input);

                throw nvae;
            }
            switch (alt33) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2684:2: ( 'black-box' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2684:2: ( 'black-box' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2684:4: 'black-box'
                    {
                    match(input,48,FOLLOW_48_in_ruleVisibility5321); 

                            current = grammarAccess.getVisibilityAccess().getBlackboxEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getVisibilityAccess().getBlackboxEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2690:6: ( 'white-box' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2690:6: ( 'white-box' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2690:8: 'white-box'
                    {
                    match(input,49,FOLLOW_49_in_ruleVisibility5336); 

                            current = grammarAccess.getVisibilityAccess().getWhiteboxEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getVisibilityAccess().getWhiteboxEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVisibility


    // $ANTLR start ruleLevel
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2700:1: ruleLevel returns [Enumerator current=null] : ( ( 'summary' ) | ( 'user-goal' ) | ( 'subfunction' ) ) ;
    public final Enumerator ruleLevel() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2704:6: ( ( ( 'summary' ) | ( 'user-goal' ) | ( 'subfunction' ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2705:1: ( ( 'summary' ) | ( 'user-goal' ) | ( 'subfunction' ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2705:1: ( ( 'summary' ) | ( 'user-goal' ) | ( 'subfunction' ) )
            int alt34=3;
            switch ( input.LA(1) ) {
            case 50:
                {
                alt34=1;
                }
                break;
            case 51:
                {
                alt34=2;
                }
                break;
            case 52:
                {
                alt34=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("2705:1: ( ( 'summary' ) | ( 'user-goal' ) | ( 'subfunction' ) )", 34, 0, input);

                throw nvae;
            }

            switch (alt34) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2705:2: ( 'summary' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2705:2: ( 'summary' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2705:4: 'summary'
                    {
                    match(input,50,FOLLOW_50_in_ruleLevel5379); 

                            current = grammarAccess.getLevelAccess().getSummaryEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getLevelAccess().getSummaryEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2711:6: ( 'user-goal' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2711:6: ( 'user-goal' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2711:8: 'user-goal'
                    {
                    match(input,51,FOLLOW_51_in_ruleLevel5394); 

                            current = grammarAccess.getLevelAccess().getUsergoalEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getLevelAccess().getUsergoalEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2717:6: ( 'subfunction' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2717:6: ( 'subfunction' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2717:8: 'subfunction'
                    {
                    match(input,52,FOLLOW_52_in_ruleLevel5409); 

                            current = grammarAccess.getLevelAccess().getSubfunctionEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getLevelAccess().getSubfunctionEnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleLevel


    // $ANTLR start ruleScenarioResult
    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2727:1: ruleScenarioResult returns [Enumerator current=null] : ( ( 'success' ) | ( 'failure' ) ) ;
    public final Enumerator ruleScenarioResult() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2731:6: ( ( ( 'success' ) | ( 'failure' ) ) )
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2732:1: ( ( 'success' ) | ( 'failure' ) )
            {
            // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2732:1: ( ( 'success' ) | ( 'failure' ) )
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==53) ) {
                alt35=1;
            }
            else if ( (LA35_0==54) ) {
                alt35=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("2732:1: ( ( 'success' ) | ( 'failure' ) )", 35, 0, input);

                throw nvae;
            }
            switch (alt35) {
                case 1 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2732:2: ( 'success' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2732:2: ( 'success' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2732:4: 'success'
                    {
                    match(input,53,FOLLOW_53_in_ruleScenarioResult5452); 

                            current = grammarAccess.getScenarioResultAccess().getSuccessEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getScenarioResultAccess().getSuccessEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2738:6: ( 'failure' )
                    {
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2738:6: ( 'failure' )
                    // ../scerbak.usecases/src-gen/scerbak/parser/antlr/internal/InternalUsecases.g:2738:8: 'failure'
                    {
                    match(input,54,FOLLOW_54_in_ruleScenarioResult5467); 

                            current = grammarAccess.getScenarioResultAccess().getFailureEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getScenarioResultAccess().getFailureEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleScenarioResult


    protected DFA22 dfa22 = new DFA22(this);
    static final String DFA22_eotS =
        "\21\uffff";
    static final String DFA22_eofS =
        "\2\uffff\6\10\1\uffff\2\13\1\uffff\5\13";
    static final String DFA22_minS =
        "\1\5\1\uffff\6\4\1\uffff\2\4\1\uffff\5\4";
    static final String DFA22_maxS =
        "\1\6\1\uffff\6\52\1\uffff\1\46\1\52\1\uffff\5\52";
    static final String DFA22_acceptS =
        "\1\uffff\1\1\6\uffff\1\3\2\uffff\1\2\5\uffff";
    static final String DFA22_specialS =
        "\21\uffff}>";
    static final String[] DFA22_transitionS = {
            "\1\2\1\1",
            "",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "\1\10\1\3\1\11\12\uffff\1\10\7\uffff\10\10\2\uffff\1\4\1\uffff"+
            "\2\10\1\uffff\1\5\1\6\1\7",
            "",
            "\1\13\1\12\1\13\12\uffff\1\13\7\uffff\10\13\1\10\3\uffff\2\13",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1\15"+
            "\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1\15"+
            "\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1\15"+
            "\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1\15"+
            "\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1\15"+
            "\1\uffff\2\13\1\uffff\1\16\1\17\1\20",
            "\1\13\1\14\1\13\12\uffff\1\13\7\uffff\10\13\1\10\1\uffff\1\15"+
            "\1\uffff\2\13\1\uffff\1\16\1\17\1\20"
    };

    static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
    static final short[][] DFA22_transition;

    static {
        int numStates = DFA22_transitionS.length;
        DFA22_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
        }
    }

    class DFA22 extends DFA {

        public DFA22(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 22;
            this.eot = DFA22_eot;
            this.eof = DFA22_eof;
            this.min = DFA22_min;
            this.max = DFA22_max;
            this.accept = DFA22_accept;
            this.special = DFA22_special;
            this.transition = DFA22_transition;
        }
        public String getDescription() {
            return "1380:1: (this_SubGoal_0= ruleSubGoal | this_Interaction_1= ruleInteraction | this_AnyAction_2= ruleAnyAction )";
        }
    }
 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleModel131 = new BitSet(new long[]{0x0000080000008000L});
    public static final BitSet FOLLOW_rulePackage_in_ruleModel153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rulePackage234 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackage255 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_rulePackage265 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleUseCase_in_rulePackage286 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleUseCase_in_entryRuleUseCase323 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUseCase333 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleUseCase368 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleUseCase389 = new BitSet(new long[]{0x0000000001FC0000L});
    public static final BitSet FOLLOW_18_in_ruleUseCase400 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleUseCase421 = new BitSet(new long[]{0x0000000001F80000L});
    public static final BitSet FOLLOW_19_in_ruleUseCase476 = new BitSet(new long[]{0x0003E00000000040L});
    public static final BitSet FOLLOW_ruleScope_in_ruleUseCase497 = new BitSet(new long[]{0x000000003FF80000L});
    public static final BitSet FOLLOW_20_in_ruleUseCase559 = new BitSet(new long[]{0x001C000000000000L});
    public static final BitSet FOLLOW_ruleLevel_in_ruleUseCase580 = new BitSet(new long[]{0x000000003FF80000L});
    public static final BitSet FOLLOW_21_in_ruleUseCase642 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleUseCase663 = new BitSet(new long[]{0x000000003FF80000L});
    public static final BitSet FOLLOW_22_in_ruleUseCase725 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleUseCase746 = new BitSet(new long[]{0x000000003FF80040L});
    public static final BitSet FOLLOW_23_in_ruleUseCase809 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleUseCase830 = new BitSet(new long[]{0x000000003FF80040L});
    public static final BitSet FOLLOW_24_in_ruleUseCase893 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleInterest_in_ruleUseCase914 = new BitSet(new long[]{0x000000003FF80040L});
    public static final BitSet FOLLOW_25_in_ruleUseCase1014 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleUseCase1035 = new BitSet(new long[]{0x000000003E000040L});
    public static final BitSet FOLLOW_26_in_ruleUseCase1098 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleUseCase1119 = new BitSet(new long[]{0x000000003E000040L});
    public static final BitSet FOLLOW_27_in_ruleUseCase1182 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleUseCase1203 = new BitSet(new long[]{0x000000003E000040L});
    public static final BitSet FOLLOW_28_in_ruleUseCase1266 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleTrigger_in_ruleUseCase1287 = new BitSet(new long[]{0x000000003E000000L});
    public static final BitSet FOLLOW_29_in_ruleUseCase1337 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleActionStep_in_ruleUseCase1358 = new BitSet(new long[]{0x00000001C0000012L});
    public static final BitSet FOLLOW_30_in_ruleUseCase1370 = new BitSet(new long[]{0x0000001000000010L});
    public static final BitSet FOLLOW_ruleExtension_in_ruleUseCase1391 = new BitSet(new long[]{0x0000001180000012L});
    public static final BitSet FOLLOW_31_in_ruleUseCase1405 = new BitSet(new long[]{0x0000001000000010L});
    public static final BitSet FOLLOW_ruleVariant_in_ruleUseCase1426 = new BitSet(new long[]{0x0000001100000012L});
    public static final BitSet FOLLOW_32_in_ruleUseCase1440 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleIssue_in_ruleUseCase1461 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_ruleScope_in_entryRuleScope1500 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScope1510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVisibility_in_ruleScope1556 = new BitSet(new long[]{0x0000E00000000040L});
    public static final BitSet FOLLOW_ruleScopeType_in_ruleScope1578 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleActor_in_ruleScope1600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActor_in_entryRuleActor1636 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActor1646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleActor1692 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_16_in_ruleActor1703 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleActor1724 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInterest_in_entryRuleInterest1762 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInterest1772 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleInterest1820 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleInterest1830 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleInterest1851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleState_in_entryRuleState1887 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleState1897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleState1942 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondition_in_entryRuleCondition1977 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCondition1987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleCondition2035 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleCondition2045 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleState_in_ruleCondition2066 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTrigger_in_entryRuleTrigger2102 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTrigger2112 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleTrigger2160 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleTrigger2170 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleAction_in_ruleTrigger2191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleActionStep_in_entryRuleActionStep2227 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActionStep2237 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_ruleActionStep2283 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleActionStep2293 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleActionStep2316 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleActionStep2326 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleAction_in_ruleActionStep2347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAction_in_entryRuleAction2383 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAction2393 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubGoal_in_ruleAction2440 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInteraction_in_ruleAction2467 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnyAction_in_ruleAction2494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnyAction_in_entryRuleAnyAction2529 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnyAction2539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleAnyAction2584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubGoal_in_entryRuleSubGoal2619 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubGoal2629 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleSubGoal2676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInteraction_in_entryRuleInteraction2711 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInteraction2721 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleInteraction2767 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleInteraction2790 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleStepSelector_in_entryRuleSingleStepSelector2826 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSingleStepSelector2836 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_ruleSingleStepSelector2883 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepRangeSelector_in_entryRuleStepRangeSelector2918 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStepRangeSelector2928 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_ruleStepRangeSelector2976 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleStepRangeSelector2986 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleORD_in_ruleStepRangeSelector3009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractStepSelector_in_entryRuleAbstractStepSelector3045 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractStepSelector3055 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleStepSelector_in_ruleAbstractStepSelector3102 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepRangeSelector_in_ruleAbstractStepSelector3129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepListSelector_in_entryRuleStepListSelector3164 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStepListSelector3174 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3220 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_35_in_ruleStepListSelector3231 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleAbstractStepSelector_in_ruleStepListSelector3252 = new BitSet(new long[]{0x0000000800000002L});
    public static final BitSet FOLLOW_ruleAllStepsSelector_in_entryRuleAllStepsSelector3290 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAllStepsSelector3300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleAllStepsSelector3342 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepSelector_in_entryRuleStepSelector3390 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStepSelector3400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepListSelector_in_ruleStepSelector3447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAllStepsSelector_in_ruleStepSelector3474 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionEndAction_in_entryRuleExtensionEndAction3509 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionEndAction3519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScenarioEnd_in_ruleExtensionEndAction3566 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGoto_in_ruleExtensionEndAction3593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleScenarioEnd_in_entryRuleScenarioEnd3628 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleScenarioEnd3638 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleScenarioEnd3673 = new BitSet(new long[]{0x0060000000000000L});
    public static final BitSet FOLLOW_ruleScenarioResult_in_ruleScenarioEnd3694 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGoto_in_entryRuleGoto3730 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGoto3740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleGoto3775 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleORD_in_ruleGoto3798 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionStep_in_entryRuleExtensionStep3834 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionStep3844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleExtensionStep3892 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleExtensionStep3902 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleAction_in_ruleExtensionStep3923 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionEndStep_in_entryRuleExtensionEndStep3959 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionEndStep3969 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionEndAction_in_ruleExtensionEndStep4014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtension_in_entryRuleExtension4049 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtension4059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepSelector_in_ruleExtension4105 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleCondition_in_ruleExtension4126 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleExtension4136 = new BitSet(new long[]{0x0000006000000040L});
    public static final BitSet FOLLOW_ruleExtensionStep_in_ruleExtension4157 = new BitSet(new long[]{0x0000006000000040L});
    public static final BitSet FOLLOW_ruleExtensionEndStep_in_ruleExtension4179 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariant_in_entryRuleVariant4215 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariant4225 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStepSelector_in_ruleVariant4271 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleVariant4292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIssue_in_entryRuleIssue4328 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIssue4338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleIssue4386 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleIssue4396 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleIssue4417 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleIssue4427 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleORD_in_entryRuleORD4464 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleORD4475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleORD4514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_entryRulePlainText4559 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlainText4570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText4610 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText4631 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_35_in_rulePlainText4655 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_40_in_rulePlainText4674 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_41_in_rulePlainText4693 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_42_in_rulePlainText4712 = new BitSet(new long[]{0x0000070800000022L});
    public static final BitSet FOLLOW_ruleNAME_in_entryRuleNAME4755 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNAME4766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_UPID_in_ruleNAME4806 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleNAME4834 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport4881 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport4891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleImport4926 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport4947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName4984 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName4995 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName5035 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_34_in_ruleQualifiedName5054 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName5069 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard5117 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard5128 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard5175 = new BitSet(new long[]{0x0000100000000002L});
    public static final BitSet FOLLOW_44_in_ruleQualifiedNameWithWildcard5194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleScopeType5248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleScopeType5263 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleScopeType5278 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleVisibility5321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleVisibility5336 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleLevel5379 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleLevel5394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleLevel5409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleScenarioResult5452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleScenarioResult5467 = new BitSet(new long[]{0x0000000000000002L});

}
